美文网首页
9.物理层级结构

9.物理层级结构

作者: 善良的良 | 来源:发表于2019-05-28 21:25 被阅读0次

    物理:database cluseter——>tablespace——>file——>block

    逻辑:database cluseter——>database——>schema——>object——>tuple

    1 (1).png

    tablesapce

    将不同的表放在不同目录下,通过文件系统的分离,优化存储空间和I/O吞吐
    create tablespace tbs2 location '/home/postgres/tbs2';
    create table t1 (id int) tablespace tbs2;
    alter table t1 set tablespace tbs2;

    database

    同一cluster database下的数据库是独立的
    create database db1 template template0 tablespace tbs1
    缺省会以template1作为模板,template1可被修改。建完全干净的库可以template0为模板
    tablespace会设置该库的缺省表空间

    page

    page又称block,内存里称buffer,是pg中I/O的最小单元
    缺省大小8kB,可设置范围1~32KB,2^n
    数据块结构:(pg tuple进入page是从后往前)

    • 块头:包括LSN、Checksum、空闲空间起止位置等
    • 行指针:包含偏移量和长度,占4字节
    • 空闲空间
    • 行数据
    • 特殊数据:索引访问方法
    1 (2).png

    tuple(row)

    • tuple头部包括
      • t_xmin
      • t_xmax
      • t_cid
      • t_xvc
      • t_xtid
      • t_infomask2
      • t_infomask
      • t_hoff

    空闲空间管理(oid_fsm)

    • PostgreSQL使用Free Space Map(FSM)文件管理空闲空间,每个数据表文件都会对应一个<oid>_fsm文件
    • FSM 文件使用一个字节来记录一个数据块的空闲空间大小的范围,即0~255的值表示以 32 字节为间隔区间的空闲空间,该字节若为 N ,那么空闲空间范围为 N32~(N+1)32-1 ,若 N=3 ,那么空闲空间范围为 96~127
    • FSM 文件实际上是一个 3 层的 B TREE 的索引结构,用于快速空间检索

    可见性映射文件(oid_vm)

    • 当数据被update/delete后,即使事务提交了也不会马上能够被重复利用,必须要进行空间回收(VACCUM)
    • PostgreSQL 使用可见性映射文件(Visibility Map File)标记需要清理的数据块,即 vm 结尾的文件
    • VM 文件使用二进制位图标识需要清理的数据块

    相关文章

      网友评论

          本文标题:9.物理层级结构

          本文链接:https://www.haomeiwen.com/subject/ynuctctx.html