存储快速理解

简单来说基于文件系统存储的数据库的,一般不能将所有数据放在一个大的数据块中进行加载,因此数据记录会被存储在具有逻辑或物理层次结构的文件块中,比如表空间,表空间下的分片,分片下的范围,范围下的数据页,数据页中的元组。数据页和元组中还会有头信息,用来描述数据的长度或者偏移量等信息。另一方面,受到磁盘扇区和机械读写头访问的物理限制,数据页一般会和磁盘扇面的大小对齐,或为扇面大小的整数倍,而页面的大小也会影响读取和写入的效率和内存占用,另外相邻的数据理论上应该紧密相连在连续访问的扇面上,从而避免读写头的随机移动带来的性能损耗,因此使用连续主键,且避免使用UUID,以及使用适合的数据结构,例如B+树来储存数据会是比较常用的技术方式。一些数据库支持自定义调整页面大小。MySQL默认为16K。

抽象布局

Oracle

数据库存储机制 - 图4

InnoDB

image.png

数据库存储机制 - 图6
数据库存储机制 - 图7

数据库存储机制 - 图8

数据库存储机制 - 图9

数据库存储机制 - 图10