(1)前序:
数据库最终的数据都要存放到磁盘上的文件里的,然后在文件里存放的物理格式就是数据页,大量的数据页在磁盘文件是如何存储的?
(2)数据页存储结构:
大量的数据页是按顺序一页一页存放的,然后两两相邻的数据页之间会采用双向链表的格式互相引用。其实一个数据页在磁盘里就是一段数据,可能是二进制数据或者别的特殊格式的数据,然后数据页里包含两个指针,一个指针指向自己上一个数据页的物理地址,一个指针指向自己下一个数据页的物理地址,大概是类似下面这样:
DataPage: xx=xx, xx=xx, linked_list_pre_pointer=15367, linked_list_next_pointer=34126 || DataPage: xx=xx, xx=xx, linked_list_pre_pointer=23789, linked_list_next_pointer=46589 || DataPage: xx=xx, xx=xx, linked_list_pre_pointer=33198, linked_list_next_pointer=55681
这段示例数据,不能完全认为是MySQL数据库的磁盘文件里的存储格式,但是是类似的形式,就是每个数据页在磁盘文件里都是一段连续的数据;
然后一个数据页内存会存储一行行的数据,也就是平时在一个表里插入的一行行的数据 存储在数据页里,然后数据页里的每一行数据都会按照主键大小进行排序存储,同时每一行数据都有指针指向下一行数据的位置,组成单向链表。
行数据使用单向链表,数据页使用双向链表相互引用。