pg_table_size()
,pg_relation_size()
& pg_total_relation_size()
有什麼區別?pg_table_size,pg_relation_size和pg_total_relation_size有什麼區別? (PostgreSQL)
我瞭解in the documentation解釋的基本差異,但它暗示我的表實際使用多少空間?
pg_table_size()
,pg_relation_size()
& pg_total_relation_size()
有什麼區別?pg_table_size,pg_relation_size和pg_total_relation_size有什麼區別? (PostgreSQL)
我瞭解in the documentation解釋的基本差異,但它暗示我的表實際使用多少空間?
對於隨機表:
# select pg_relation_size(20306, 'main') as main,
pg_relation_size(20306, 'fsm') as fsm,
pg_relation_size(20306, 'vm') as vm,
pg_relation_size(20306, 'init') as init,
pg_table_size(20306), pg_indexes_size(20306) as indexes,
pg_total_relation_size(20306) as total;
main | fsm | vm | init | pg_table_size | indexes | total
--------+-------+------+------+---------------+---------+--------
253952 | 24576 | 8192 | 0 | 286720 | 196608 | 483328
(1 row)
從這一點,你可以告訴pg_table_size
是pg_relation_size
的所有返回值的總和。 pg_total_relation_size
是pg_table_size
和pg_indexes_size
的總和。
如果您想知道您的表格使用了多少空間,請使用pg_table_size
和pg_total_relation_size
來思考它們 - 一個數字僅用於表格,一個數字是表格+索引。
檢查storage file layout有關哪些fsm
,vm
和init
意味着一些信息,以及他們是如何存儲在磁盤上。
謝謝@ jmelesky,這是一個完美的答案! <3 –
什麼是不清楚關於例如「*並返回用於該表的所有磁盤空間,包括所有相關索引*」? –
http://stackoverflow.com/questions/2596624/how-do-you-find-the-disk-size-of-a-postgres-postgresql-table-and-its-indexes/2596678#2596678 –
@a_horse_with_no_name I主要困惑的是「返回該關係的一個分支的磁盤大小(以字節爲單位)。」在這種情況下,什麼是關係和分叉? (我是PostgreSQL的新手)它還列出了一些叉子的例子:「主數據分叉」,「可用空間圖」,「可見性圖」和「初始化叉」。那些是什麼?哪一個與我的表使用的實際磁盤空間有關? –