ptolmachev
@ptolmachev
Я - норм

Куда «потерялась» часть размера таблицы?

Здравствуйте.
(PostgreSQL 10, xubuntu 16.04, x86)
Ситуация: создал таблицу с одним столбцом типа text, метод хранения по умолчанию extended.
Закачал туда большие данные (999^999, преобразованные в text), создалась toast-таблица.
Проверяю размер всех слоёв основной таблицы - 46 МБ.
Проверяю размер всех слоёв связанной TOAST-таблицы - 3907 Мб.
Проверяю полный размер таблицы - 3996 Мб.
Математика подсказывает, что 46 + 3907 != 3996 МБ.
(Поэкспериментировал с методом хранения столбца external (сжатие не допускается) - тоже "потерянный" кусок есть.)
Подскажите, пожалуйста, куда "потерялся" кусок от таблицы в 43 МБ? Где его искать? Или эти мегабайты "сжались" за счет метода хранения extended?
---
Нахожу файлы, которые соответствуют основной таблице (tb_test) и ей соответствующей toast-таблице:
5e423508493d8205917956.png
Нахожу размер этих файлов:
5e423524428a1289596884.png
  • Вопрос задан
  • 70 просмотров
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
\dt+ показывает pg_catalog.pg_size_pretty(pg_catalog.pg_table_size(c.oid)) as "Size",
pg_total_relation_size - это pg_table_size + размер индексов таблицы.

Все они считаются здесь: https://github.com/postgres/postgres/blob/REL_11_S...
Итого вы не посчитали размер индексов на toast. Как правило он там один

слои файлов (main, fsm, vm)

Это relation forks
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
mayton2019
@mayton2019
Bigdata Engineer
Сразу 3 замечания.

Непонятно зачем автору считать 43 мегабайта на фоне 3Гб. Это 1%.
Непонятно зачем автор печатает физические размеры файлов. Ведь в них хранятся заголовки и всякие
прочие служебные структуры данных которые к размеру таблицы не относятся.
И непонятно зачем автор вывел длины файлов в размере который округлён в human-readable? Там все равно не учтены килобайты. Уж если пошёл счет на копейки так надо и копейки печатать.

Прости но уж очень много неточностей и косвенностей в самом вопросе. Просто нельзя так.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы