2017-02-06 3 views
0

Nachdem die Abfrage zur Verfügung gestellt Ausführung here, habe ich unten führenWas ist die Beziehung zwischen pg_table_size und pg_relation_size?

Select pg_relation_size(20473, 'main'),pg_relation_size(20473,'fsm'), 
pg_relation_size(20473,'vm'),pg_relation_size(20473,'init'),pg_table_size(20473) 
from pg_statio_user_tables 

enter image description here.

Warum bin ich nicht

pg_relation_size(20473,'main') + pg_relation_size(20473,'fsm') + pg_relation_size(20473,'vm') + pg_relation_size(20473,'init') = pg_table_size(20473)? 

Antwort

2

pg_relation_size Anrufe calclulate_relation_size bekommen.

pg_table_size Anrufe calculate_table_size.

calculate_table_size Anrufe calclulate_relation_size und calculate_toast_table_size.

Also beim Aufruf pg_table_size wird die TOAST -Data hinzugefügt.

Link to Source Code

2

Von the documentation:

pg_relation_size(relation regclass, fork text)
Speicherplatz, der von der angegebenen Gabel verwendet ('main', 'fsm', 'vm' oder 'init') des angegebenen Tabelle oder ein Index

pg_table_size(regclass)
Speicherplatz belegt von der angegebenen Tabelle, ohne Indizes (aber einschließlich TOAST, Freiraum Karte und Sichtbarkeitskarte)

So muss es die TOAST Tabelle sein.

Verwandte Themen