2013-08-19 12 views
17

C'è una colonna di tipo text in una tabella in Postgres 9.1. Mi piacerebbe sapere l'impatto di solo quella colonna sullo spazio su disco necessario. Non è necessario essere precisi, ma mi piacerebbe avere un'idea se quella colonna è responsabile del 20%/30%/... dello spazio su disco consumato dal database.Come stimare la dimensione di una colonna in una tabella Postgres?

Conosco pg_relation_size, ma funziona solo a livello di tabella.

Ho molti database con questo stesso schema. Ne ho scaricato uno più piccolo e ho tagliato la colonna con grep e tagliato e ho confrontato le dimensioni dei dump di testo normale. Ma questo non è necessariamente un buon indicatore dei requisiti di spazio nel live db, ed è anche più difficile farlo per grandi database.

risposta

31
select 
    sum(pg_column_size(the_text_column)) as total_size, 
    avg(pg_column_size(the_text_column)) as average_size, 
    sum(pg_column_size(the_text_column)) * 100.0/pg_relation_size('t') as percentage 
from t; 
+7

pg_relation_size restituisce la dimensione della tabella di base senza includere la tabella del brindisi. Quando a qualcuno interessa l'utilizzo del disco di ogni colonna, è probabile che sia coinvolta una tabella di pane tostato, quindi probabilmente si preferisce utilizzare pg_table_size. – jjanes

+5

È inoltre possibile utilizzare pg_total_relation_size se si desidera contare la tabella del brindisi più la dimensione degli indici. –

Problemi correlati