![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据库
文章平均质量分 95
来一杯龙舌兰
学识尚浅
展开
-
数据库-Sql语句优化(高级详解)
在InnoDB引擎中,数据行是记录在逻辑结构 page 页中的,而每一个页的大小是固定的,默认16K。那也就意味着, 一个页中所存储的行也是有限的,如果插入的数据行row在该页存储不小,将会存储到下一个页中,页与页之间会通过指针连接原创 2024-05-22 21:30:42 · 1260 阅读 · 0 评论 -
数据库-Sql性能分析(慢查询、EXPLAIN详解)
select_type为index_merge时,这⾥可能出现两个以上的索引,其他的 select_type这⾥只会出现⼀个。⽤于处理查询的索引⻓度,如果是单列索引,那就整个索引⻓度算进去,如果是多列索引,那么查询不⼀定都能使⽤到所有的列。如果是使⽤的常数等值查询,这⾥会显示const 如果是连接查询,被驱动表的执⾏计划这⾥会显示驱动表的关联字段。这个列包含不适合在其他列中显示单⼗分重要的额外的信息,这个列可以显示的信息⾮常多原创 2024-05-22 20:11:58 · 1090 阅读 · 0 评论 -
数据库-事物原理刨析(高级详解)
事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。• 原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败。• 一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态。• 隔离性(Isolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。• 持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的原创 2024-05-20 08:00:00 · 798 阅读 · 0 评论 -
数据库-分库分表(高级详解)
分库分表,是企业里面比较常见的针对高并发、数据量大的场景下的一种技术优化方案,所谓"分库分表",根本就不是一件事儿,而是三件事儿,他们要解决的问题也都不一样。这三个事儿分别是 “只分库不分表”、“只分表不分库”、以及"既分库又分表”。原创 2024-05-19 15:26:38 · 1237 阅读 · 0 评论 -
数据库-Mysql锁详解(全局锁、表级锁、行级锁)
客户端二,如果也执行update语句更新id为1的数据,也要为id为1的数据加排他锁,但是客户端二会处于阻塞状态,因为排他锁之间是互斥的。而客户端二,在更新id为3的数据时,更新成功,并未进入阻塞状态。原因就是因为此时,客户端一,根据name字段进行更新时,name字段是没有索引的,如果没有索引,此时行锁会升级为表锁(因为行锁是对索引项加的锁,而name没有索引)。当客户端二,想对这张表加表锁时,会检查当前表是否有对应的行锁,如果没有,则添加表锁,此时就会从第一行数据,检查到最后一行数据,效率较低。原创 2024-05-19 14:12:21 · 803 阅读 · 0 评论 -
数据库-索引使用(索引失效情况)
因为MySQL在查询时,会评估使用索引的效率与走全表扫描的效率,如果走全表扫描更快,则放弃索引,走全表扫描。由于下面查询语句中,都是根据profession字段查询,符合最左前缀法则,联合索引是可以生效的,我们主要看一下,模糊查询时,%加在关键字之前,和加在关键字之后的影响。经过上面两组示例,我们会明显的发现,如果字符串不加单引号,对于查询结果,没什么影响,但是数据库存在隐式类型转换,索引将失效。当范围查询使用>= 或原创 2024-05-18 14:34:21 · 891 阅读 · 0 评论 -
数据库-索引使用(验证索引效率、单列索引与联合索引、最左前缀法则)
我们发现只要联合索引最左边的字段 profession存在,索引就会生效,只不过索引的长度不同。但是查询时,跳过了age这个列,所以后面的列索引是不会使用的,也就是索引部分生效,所以索引的长度就是47。注意 : 最左前缀法则中指的最左边的列,是指在查询时,联合索引的最左边的字段(即是第一个字段)必须存在,与我们编写SQL时,条件编写的先后顺序无关。此时,查询时,就走了联合索引,而在联合索引中包含 phone、name的信息,在叶子节点下挂的是对应的主键id,所以查询是无需回表查询的。原创 2024-05-18 13:02:00 · 1183 阅读 · 0 评论 -
数据库-索引分类(单列索引、复合索引、聚簇索引、二级索引)
在MySQL数据库,将索引的具体类型主要分为以下几类:主键索引、唯一索引、普通索引、全文索引。单列索引复合索引在MYSQL多列上创建的索引, 就是一个复合索引(组合索引)原创 2024-05-17 08:31:57 · 509 阅读 · 1 评论 -
数据库-索引语法(增删查)
CREATE [ UNIQUE | FULLTEXT ] INDEX index_name ON table_name ( index_col_name,... )原创 2024-05-17 08:31:39 · 397 阅读 · 1 评论 -
数据库-索引结构(B-Tree,B+Tree,Hash,二叉树)
所以,在MySQL的索引结构中,并没有选择二叉树或者红黑树,而选择的是B+Tree,在原B+Tree的基础上,增加一个指向相邻叶子节点的链表指针,就形成了带有顺序指针的B+Tree,提高区间访问的性能,利于排序。上述是MySQL中所支持的所有的索引结构,接下来,我们再来看看不同的存储引擎对于索引结构的支持情况。上述是标准的B+Tree的数据结构,接下来,我们再来看看MySQL中优化之后的B+Tree。MySQL的索引是在存储引擎层实现的,不同的存储引擎有不同的索引结构,主要包含以下几种。原创 2024-05-16 09:30:45 · 1305 阅读 · 1 评论 -
数据库-索引(基础篇)
减少磁盘 I/O:索引通常存储在内存中,因此可以减少对磁盘的访问次数。当数据库引擎需要从磁盘读取数据时,如果使用了索引,它可以首先定位到索引中的位置,然后再读取相应的数据块,从而减少了磁盘I/O 操作的次数,提高了查询效率原创 2024-05-16 09:08:54 · 604 阅读 · 1 评论