|
@@ -21,6 +21,25 @@
|
|
|
2. B+ 树在删除根节点的时候,由于存在冗余的节点,所以不会发生复杂的树的变形,B 树则不同,B 树没有冗余节点,删除节点的时候非常复杂
|
|
|
3. B+ 树所有叶子节点间还有一个链表进行连接,这种设计对范围查找非常有帮助
|
|
|
2. 数据文件:MySQL 数据库将数据存储在磁盘上的数据文件中,底层由表空间构成,表空间由段(segment)、区(extent)、页(page)、行(row)组成
|
|
|
+
|
|
|
+![image-20230524111644588](assets/image-20230524111644588.png)
|
|
|
+
|
|
|
+为什么分区?
|
|
|
+
|
|
|
+页要连续,顺序IO读写快,每个区都维护一个链表,代表空闲区的指针
|
|
|
+
|
|
|
+- `FREE`链表:同一个段中,所有页都是空闲的区对应的`XDES Entry`结构会被加入到这个链表。注意和直属于表空间的`FREE`链表区别开了,此处的`FREE`链表是附属于某个段的。
|
|
|
+- `NOT_FULL`链表:同一个段中,仍有空闲空间的区对应的`XDES Entry`结构会被加入到这个链表。
|
|
|
+- `FULL`链表:同一个段中,已经没有空闲空间的区对应的`XDES Entry`结构会被加入到这个链表。
|
|
|
+
|
|
|
+为什么分段?
|
|
|
+
|
|
|
+区分叶子节点和非叶子节点
|
|
|
+
|
|
|
+页?
|
|
|
+
|
|
|
+稀疏索引,分组
|
|
|
+
|
|
|
3. InnoDB 存储引擎:InnoDB 是 MySQL 的一种常用存储引擎,它使用了多版本并发控制(MVCC)和行级锁来实现高并发性和事务支持。InnoDB 存储引擎的核心数据结构包括页(page)、记录(record)、索引(index)和事务日志(transaction log)等。
|
|
|
|
|
|
## 联合索引定义要注意哪些点
|