文章目录
索引
事务控制机制
内置函数
系统信息函数(system information functions)
管理员权限函数(system administration functions)
数据库内置对象控制函数
函数签名 | 返回类型 | 功能说明 | 举例 |
---|---|---|---|
pg_database_size(name | oid) | bigint | 指定数据库的总内存占用量 | select pg_database_size(database_name) |
pg_tablespace_size(name | oid) | bigint | 指定表空间的总内存占用量 | select pg_tablespace_size(‘tablespace_name’) |
pg_total_relation_size(regclass) | bigint | 指定表的总内存占用量,等于(pg_indexes_size + pg_table_size) | select pg_total_relation_size(‘table_name’) |
pg_indexes_size(regclass) | bigint | 指定索引的总内存占用总量 | select pg_indexes_size(‘index_name’) |
pg_table_size(regclass) | bigint | 指定表的总内存占用量,不包括表关联索引所占的内存,但包括TOAST, free space map 和 visibility map 的占用内存 | select pg_table_size(‘table_name’) |
pg_relation_size(relation regclass[, fork text]) | bigint | 指定表或索引在指定 fork 存储内容中的总内存占用量,fork值可以为‘main’,‘fsm’,‘vm’,'init’中的任何一个。也可以使用 pg_relation_size(relation regclass),默认fork 为 ‘main’ | select pg_relation_size(‘table_name’,‘fsm’) |
pg_column_size(any) | bigint | 指定表的字段对每一行记录中,对应列单元值的占用内存值,单位byte。若指定表中没有记录,则返回一行,值为null;否则按照表的记录数量,返回指定行数的内存占用记录 | select pg_column_size(table_col_name) from table_name |
pg_size_pretty(regclass) | bigint | 指定表的总内存占用量,等于(pg_indexes_size+ pg_table_size) | select pg_total_relation_size(‘table_name’) |
pg_size_bytes(regclass) | bigint | 指定表的总内存占用量,等于(pg_indexes_size+ pg_table_size) | select pg_total_relation_size(‘table_name’) |
数据的物理存储
TOAST(The Oversized-Attribute Storage Technique)
- 概念
对内存占用量很大的字段值通过压缩、分隔等手段进行持久化的存储技术 - 意义
因为 postgres不允许一个元组中的值存储到不同的page中,且page的大小固定(一般为8k), 因此需要TOAST即使实现大容量元组、字段的存储 - 支持有限的数据库数据类型
- TOAST要求支持数据类型的对应值,前 4 byte 用于存储值的size大小(size = 4 byte+有效数据大小)
free space map
对应 fork 的名称:“fsm”
visibility map
对应 fork 的名称:“vm”