powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как подсчитать размер таблицы
10 сообщений из 10, страница 1 из 1
Как подсчитать размер таблицы
    #40116552
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Столкнулся со следующим, надо подсчитать приблизительный размер таблицы
Возьмём простую таблицу

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE TABLE test
(
    id            UUID PRIMARY KEY,
    field1 text,
    field2 text,
    deleted       BOOLEAN                  NOT NULL DEFAULT false,
    created_by    VARCHAR(100),
    created_date  TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
    modified_by   VARCHAR(100),
    modified_date TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
    version       BIGINT                   NOT NULL DEFAULT 0
);



https://postgrespro.ru/docs/postgresql/9.6/datatype-numeric

Я предполагаю надо
Брать размер типов , сложить и получим примерный размер одной строки
Далее умножаем на прогнозируемое количество записей и получаем размер таблицы

Но в таблице будут индексы , и может ещё какая-либо информация. Как ее учесть?
...
Рейтинг: 0 / 0
Как подсчитать размер таблицы
    #40116556
Guzya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для это есть встроенные функции

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
----------- таблицы по размеру от самой большой
----------- с toast
select 
    (schemaname||'.'||relname) as name
    ,pg_relation_size(schemaname||'.'||relname) as size
    ,pg_size_pretty(pg_relation_size(schemaname||'.'||relname)) as p_size
    ,pg_size_pretty(pg_total_relation_size(schemaname||'.'||relname)) as total_size
    ,pg_size_pretty(pg_indexes_size(schemaname||'.'||relname)) as i_size
    ,n_live_tup
    ,n_dead_tup
    ,trunc(n_dead_tup/(n_live_tup*0.01),2) as k
    ,last_autovacuum 
    ,last_autoanalyze
    ,(select relname from pg_class c where c.oid=(select cc.reltoastrelid from pg_class cc where  cc.relname=t.relname)) as toast
from pg_stat_all_tables t 
where 
    schemaname not in('pg_catalog','information_schema') 
    and n_live_tup > 0 
order by size desc,k ;
...
Рейтинг: 0 / 0
Как подсчитать размер таблицы
    #40116585
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забыл уточнить самой таблицы нет



Мне надо бы какбы бизнесу представить информацию, сколько будет место занимать БД, в будущем
...
Рейтинг: 0 / 0
Как подсчитать размер таблицы
    #40116588
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-
Забыл уточнить самой таблицы нет
Мне надо бы какбы бизнесу представить информацию, сколько будет место занимать БД, в будущем


Предсказуемый размер таблицы будет только если вы в неё исключительно вставляете новые данные.
Как только начинается вопрос таблицы где много update и delete - разумной оценки размеров таблицы сделать не получится (так как степень распухания таблицы И ОСОБЕННО индексов - она не контролируема).
Максимально сжатый размер можно оценить просто создав таблицу нужной структуры со всеми индексами и залив туда 10M строк тестовых, ну и посмотрев на получившийся размер.
Дальше можно прикидывать.

PS: давненько я не видел баз которые бы в место на дисках упирались... благо сервер с 50TB NVME шек не так уж сложно собрать даже руками на каком нить supermicro шасси.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
Как подсчитать размер таблицы
    #40116722
Misha111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk,

вопрос для общего развития (в примере ТС TOAST по идее не будет использоваться)
а сжатие TOAST не будет влиять на итоговый размер таблицы?
или там все непрогнозируемо и только тыкать тесткейсами?
...
Рейтинг: 0 / 0
Как подсчитать размер таблицы
    #40116753
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha111
Maxim Boguk,

вопрос для общего развития (в примере ТС TOAST по идее не будет использоваться)
а сжатие TOAST не будет влиять на итоговый размер таблицы?
или там все непрогнозируемо и только тыкать тесткейсами?


В теории всё прогнозируемо в неких рамках.
Но проще тесткейсами потому что на практике достаточно легко обьяснить почему вот эта таблица вот столько занимает
но вот предсказать сколько будет другая таблица с другой структурой и данными занимать - очень нетривиально, протестировать оказывается проще и быстрее.
Там и toast играет, и история таблицы (сколько там и в каком порядке добавляли или удаляли колонок), и история обновлений и порядок вставки данных в таблицу... в общем сложно всё чтобы надёжную модель построить.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
Как подсчитать размер таблицы
    #40116854
flashgun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk
PS: давненько я не видел баз которые бы в место на дисках упирались... благо сервер с 50TB NVME шек не так уж сложно собрать даже руками на каком нить supermicro шасси.

Это если из своего кармана не оплачивать эти вот NVMe :)
А так приходится размещать файлы базы и логи на zfs/lz4 и понимать, что если бы не сжатие, пришлось бы каждый месяц доплачивать ещё пару тысяч рублей...

Искал какие-нибудь ещё файловые системы со сжатием, чтобы попроще, чем zfs, не нашёл. Ну не btrfs же, в самом деле, тем более, что он на тестах сливает zfs. А собирать что-то на fuse кажется мне не очень разумным.

Надо будет набраться времени, попробовать f2fs.
...
Рейтинг: 0 / 0
Как подсчитать размер таблицы
    #40116889
flashgun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
flashgun
Надо будет набраться времени, попробовать f2fs.

Ан нет, не надо его пробовать. Там сжатие не с целью положить больше инфы на раздел, а с целью меньше читать с устройства.
...
Рейтинг: 0 / 0
Как подсчитать размер таблицы
    #40117015
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-
Забыл уточнить самой таблицы нет



Мне надо бы какбы бизнесу представить информацию, сколько будет место занимать БД, в будущем


В этой фразе прекрасно всё, а что такое "какбы бизнес" ?
И финал: "сколько будет место занимать БД, в будущем "!!
...
Рейтинг: 0 / 0
Как подсчитать размер таблицы
    #40117016
Фотография mefman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин
-=Koba=-
Забыл уточнить самой таблицы нет



Мне надо бы какбы бизнесу представить информацию, сколько будет место занимать БД, в будущем


В этой фразе прекрасно всё, а что такое "какбы бизнес" ?
И финал: "сколько будет место занимать БД, в будущем "!!

я забыл дома мой хрустальный шар)))
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как подсчитать размер таблицы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]