记录是按照行存储的,但是数据库的读取不是以行为单位,否则一次读取只能处理一行,效率很低。因此数据库,无论是读一行,还是读取多行,都是将这些行所在的页进行加载。数据管理存储空间的基本单位是页(Page)
快速回顾一遍数据库存储结构:一页可以存储多个行记录(Row) ,先是表空间(Tablespace),表空间包含段(segement),还存在区(Extent),其关系如下图所示:
oracle 中使用块代表页
数据库 IO 最小单位是页,与数据库相关的内容会存在页结构中,数据页包括7个部分,分别是文件头(File Header),页头(Page Header),最大最小记录(Inflimum+siprenum)、用户记录(User Records)、空闲空间(Free Space),页目录(Page Directory)和文件尾(File Tailer)。
页的存储结构如下:
页中各项内容:
页主要分成3部分:头尾节点部分。数据记录部分,索引部分。
数据页有两个字段,分别是文件头FIL_PAGE_PREV 和文件尾 FIL_PAGE_NEXT, 主要作用是指针,分别指向上一个数据和下一个数据,连接起来相当于一个双向链表。
第二部分是记录部分,最大最小记录和用户记录部分占了页结构的主要空间。当新记录插入的时候,会从空想空间分配用于存储新记录。
第三部分是索引部分, 这部分是页目录,起到了记录索引的作用。
如何创建一个页记录?