龙空技术网

MySQL磁盘数据页的存储结构

JavaEdge 314

前言:

此时你们对“mysql数据库的数据存储在哪里”大约比较重视,姐妹们都需要了解一些“mysql数据库的数据存储在哪里”的相关文章。那么小编在网上搜集了一些关于“mysql数据库的数据存储在哪里””的相关文章,希望兄弟们能喜欢,你们快快来了解一下吧!

磁盘上的数据文件中的数据页的物理存储结构。

数据库最终所有数据(包括各种表及表里数据)都是要存放在磁盘文件,然后在文件里存放的物理格式就是数据页。

大量数据页按顺序一页页存放,然后两两相邻数据页之间采用双向链表互相引用:

一个数据页在磁盘文件里就是一段数据,可能是二进制或气他特殊格式数据。数据页里含两个指针:

指向自己上一个数据页的物理地址指向自己下一个数据页的物理地址

类似:

 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实际存储大致也是类似这样,每个数据页在磁盘文件里都是连续的一段数据。

然后每个数据页里,可认为就是DataPage打头一直到 || 符号的一段磁盘里的连续的数据,你可以认为每一个数据页就是磁盘文件里这么一段连续的东西。

然后每个数据页:

都有个指针指向自己上一个数据页在磁盘文件里的起始物理位置,如linked_list_pre_pointer=15367,就是指向了上一个数据页在磁盘文件里的起始物理位置,那个15367可以认为就是在磁盘文件里的position或者offset也有个指针指向自己下一个数据页的物理位置

这就能理解一个磁盘文件里的多个数据页是如何通过指针组成一个双向链表的。

一个数据页内部会存储一行行数据,即我们在表里插入的一行行数据就会存储在数据页里。数据页里的每行数据都会按主键大小进行排序存储,同时每行数据都有指针指向下一行数据的位置,组成单向链表。

标签: #mysql数据库的数据存储在哪里