当前位置:首页 > 第11页

71 插入数据时到底是如何维护好不同索引的B+树的?

CarlZhou3年前 (2021-05-09)922
71 插入数据时到底是如何维护好不同索引的B+树的?
之前我们已经给大家彻底分析清楚了MySQL数据库的索引结构了,大家都知道不同索引的结构是如何的,大致是如何建立的,然后搜索的时候是如何根据不同的索引去查找数据的。 那么今天我们来给大家彻底讲清楚,你在插入数据的时候,是如何维护不同索引的B+...

70 针对主键之外的字段建立的二级索引,又是如何运作的?

CarlZhou3年前 (2021-05-09)905
70 针对主键之外的字段建立的二级索引,又是如何运作的?
上一次我们已经给大家彻底讲透了聚簇索引这个东西,其实聚簇索引就是innodb存储引擎默认给我们创建的一套基于主键的索引结构,而且我们表里的数据就是直接放在聚簇索引里的,作为叶子节点的数据页,如下图。 而且我们现在也对基于主键的数据搜索非常...

69 更新数据的时候,自动维护的聚簇索引到底是什么?

CarlZhou3年前 (2021-05-09)882
69 更新数据的时候,自动维护的聚簇索引到底是什么?
上一次我们给大家讲了一下基于主键如何组织一个索引,然后建立索引之后,如何基于主键在索引中快速定位到那行数据所在的数据页,再如何进入数据页快速到定位那行数据,大家看下面的图。我们今天就先基于上面的图,把按照主键来搜索数据的过程重新再次给大家来...

68 索引的页存储物理结构,是如何用B+树来实现的?

CarlZhou3年前 (2021-05-09)884
68 索引的页存储物理结构,是如何用B+树来实现的?
上一次我们给大家说了主键索引的目录结构,只要在一个主键索引里包含每个数据页跟他最小主键值,就可以组成一个索引目录,然后后续你查询主键值,就可以在目录里二分查找直接定位到那条数据所属的数据页,接着到数据页里二分查找定位那条数据就可以了,如下图...

67 基于主键的索引是如何设计的,以及如何根据主键索引查询?

CarlZhou3年前 (2021-05-09)942
67 基于主键的索引是如何设计的,以及如何根据主键索引查询?
上回我们说了数据页分裂的过程,在你不停的往表里灌入数据的时候,会搞出来一个一个的数据页,如果你的主键不是自增的,他可能会有一个数据行的挪动过程,保证你下一个数据页的主键值都大于上一个数据页的主键值。 在这个基础之上,我们这一讲终于可以开始正...

66 不断在表中插入数据时,物理存储是如何进行页分裂的?

CarlZhou3年前 (2021-05-09)822
66 不断在表中插入数据时,物理存储是如何进行页分裂的?
上回我们讲到了数据页的物理存储结构,数据页之间是组成双向链表的,数据页内部的数据行是组成单向链表的,每个数据页内根据主键做了一个页目录 然后一般来说,你没有索引的情况下,所有的数据查询,其实在物理层面都是全表扫描,依次扫描每个数据页内部的每...

65 假设没有任何索引,数据库是如何根据查询语句搜索数据的?

CarlZhou3年前 (2021-05-09)816
65 假设没有任何索引,数据库是如何根据查询语句搜索数据的?
上一次我们给大家讲解了数据页在磁盘文件中的物理存储结构,大家应该目前都知道数据页之间是组成双向链表的,然后数据页内部的数据行是组成单向链表的,而且数据行是根据主键从小到大排序的。 然后每个数据页里都会有一个页目录,里面根据数据行的主键存放了...

64 深入研究索引之前,先来看看磁盘数据页的存储结构

CarlZhou3年前 (2021-05-09)798
64 深入研究索引之前,先来看看磁盘数据页的存储结构
前面我们已经给大家把MySQL数据库的部分内核原理,更新语句的执行原理,事务原理以及锁原理,都初步的讲给大家听了,同时还穿插了一些相关的数据库性能优化的案例,相信现在大家已经对数据库执行增删改语句的原理有了较为深入的理解了。 接着我们就应该...

63 案例实战:线上数据库莫名其妙的随机性能抖动优化(下)

CarlZhou3年前 (2021-05-08)903
上一篇文章我们已经给大家详细分析了有时候我们在数据库里执行查询或者更新语句的时候,可能SQL语句的性能会出现不正常的莫名其妙的抖动,平时可能几十毫秒搞定的,现在居然要几秒钟。 其实这种莫名其妙的性能抖动,我们在分析过底层的原理之后,就理解的...

62 案例实战:线上数据库不确定性的性能抖动优化实践(上)

CarlZhou3年前 (2021-05-08)1295
62 案例实战:线上数据库不确定性的性能抖动优化实践(上)
之前我们花费了很大篇幅来给大家深入和细致的讲解数据库在执行增删改这类更新语句时候的底层原理,这里涉及到了很多数据库内核级的概念,比如buffer pool、redo log buffer、lru/flush链表,等等,大家对数据库执行更新语...