Sfoglia il codice sorgente

修改了mysql的面经

seamew 1 anno fa
parent
commit
3fd2f45ff3
2 ha cambiato i file con 19 aggiunte e 0 eliminazioni
  1. 19 0
      面经/问答/Mysql.md
  2. BIN
      面经/问答/assets/image-20230524111644588.png

+ 19 - 0
面经/问答/Mysql.md

@@ -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)等。
 
 ## 联合索引定义要注意哪些点

BIN
面经/问答/assets/image-20230524111644588.png