Postgres: проверить дисковое пространство, взятое из материализованного представления?

Я знаю, как проверить размер индексов и таблиц в Postgres (я использую версию 9.4):

SELECT
   relname AS objectname,
   relkind AS objecttype,
   reltuples AS "#entries", pg_size_pretty(relpages::bigint*8*1024) AS size
   FROM pg_class
   WHERE relpages >= 8
   ORDER BY relpages DESC;

Но это не показывает материализованные представления. Как я могу проверить, сколько места на диске они занимают?

12 голосов | спросил Richard 29 MaramSun, 29 Mar 2015 02:57:10 +03002015-03-29T02:57:10+03:0002 2015, 02:57:10

1 ответ


17

Это предполагает, что материализованные представления имеют relpages >= 8 в pg_class, что не обязательно должно быть. Он может быть пустым - пока не заполнен, обозначается pg_class.relispopulated = FALSE. В этом случае соответствующий файл на диске имеет размер zero .

Попробуйте вместо этого:

SELECT relname   AS objectname
     , relkind   AS objecttype
     , reltuples AS entries
     , pg_size_pretty(pg_table_size(oid)) AS size  -- depending - see below
FROM   pg_class
WHERE  relkind IN ('r', 'i', 'm')
ORDER  BY pg_table_size(oid) DESC;

Где доступные типы :

  

r = обычная таблица,
i = index,
S = sequence,
v = view,
m = материализованное представление,
c = составной тип,
t = таблица TOAST,
f = внешняя таблица

Используйте одну из функций размера объекта базы данных вместо того, чтобы создавать свои собственные. Имейте в виду, что «размер таблицы» можно определить по-разному. Подробности:

ответил Erwin Brandstetter 29 MaramSun, 29 Mar 2015 05:40:54 +03002015-03-29T05:40:54+03:0005 2015, 05:40:54

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132