pg_relation_size,pg_table_size,pg_indexes_size,pg_total_relation_size之间的关系
先通过一个例子来直观的展现一下他们的区别和联系。
存在一张带索引的表t,OID为16384,与该表相关联的TOAST表的OID为16387。
select pg_relation_size(16384) , |
pg_relation_size | main | fsm | vm | init | toast | pg_table_size | pg_indexes_size | pg_total_relation_size |
---|---|---|---|---|---|---|---|---|
106496 | 106496 | 24576 | 8192 | 0 | 4186112 | 4325376 | 114688 | 4440064 |
pg_relation_size不加参数,默认就是查的表的数据文件大小,单位字节。
pg_relation_size加参数main,也是查的表的数据文件大小,单位字节。
pg_relation_size加参数fsm,查的表的fsm文件大小,单位字节。
pg_relation_size加参数vm,查的表的vm文件大小,单位字节。
pg_relation_size加参数init,查的表的init文件大小,单位字节。
pg_table_size,查的表的数据文件,fsm文件,vm文件,init文件,toast表的总大小,单位字节。
pg_indexes_size,查的表上索引文件的大小,单位字节。
pg_total_relation_size查询的是表的总大小,也就是表的数据文件,fsm文件,vm文件,init文件,索引文件,toast表的总大小,单位字节。