2013-08-19 18 views
17

W tabeli w Postgres 9.1 znajduje się kolumna typu text. Chciałbym poznać wpływ właśnie tej kolumny na potrzebne miejsce na dysku. Nie musi to być precyzyjne, ale chciałbym się zorientować, czy ta kolumna odpowiada za 20%/30%/... przestrzeni dyskowej zużywanej przez bazę danych.Jak oszacować rozmiar jednej kolumny w tabeli PostgreS?

Znam pg_relation_size, ale działa on tylko na poziomie stołu.

Mam wiele baz danych z tym samym schematem. Zrzuciłem mniejszy i wycięłam kolumnę z grepem i cięciem i porównałem rozmiar zrzutu na zwykły tekst. Ale niekoniecznie jest to dobry wskaźnik wymagań dotyczących miejsca w żywej bazie danych, a także trudniejsze w przypadku dużych baz danych.

Odpowiedz

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 zwraca rozmiar tabeli bazowej bez uwzględniania tabeli tostów. Gdy ktoś dba o użycie dysku w każdej kolumnie, prawdopodobnie bierze się pod uwagę tabelę tostową, więc prawdopodobnie wolisz używać pg_table_size. – jjanes

+5

Możesz także użyć pg_total_relation_size, jeśli chcesz policzyć tabelę tostów plus rozmiar indeksów. –

Powiązane problemy