2013-12-16 1 views
1

В последнее время я немного ленив и создавал гигабайты записей базы данных PostGis, которые мне больше не нужны. Я начинаю думать о том, чтобы немного очистить его, но хочу определить, сколько байтов занимают эти записи.Определить размер таблицы или выбранных записей в байтах/мегабайтах

Я использую рельсы, поэтому, если бы я мог вызвать метод или sql-фрагмент в уже выбранной группе записей, чтобы определить размер указанных записей в байтах, это было бы очень полезно.

ответ

5

Для таблицы:

SELECT pg_size_pretty(pg_total_relation_size('name_of_tbl')); 

Для конкретного столбца или строки

SELECT pg_column_size(t) 
FROM tbl t 
WHERE tbl_id = ? 

Существует много больше в этом соответствующий ответ на dba.SE:
Measure the size of a PostgreSQL table row

+0

Не то, чтобы это важно, но вы также можете добавить pg_size_pretty() вокруг любой из вышеперечисленных функций, чтобы получить «красивые» размеры вместо байтов. –

+0

@JoeLove: ... как задокументировано в ответе, который я связал с ... –

+0

Я пометил это как правильно некоторое время назад, но я просто пытаюсь это сделать, и получаю следующее: 'ActiveRecord :: StatementInvalid: PG :: UndefinedColumn: ERROR: столбец «horry_parcels» не существует' после запуска этой команды: «SELECT pg_total_relation_size (horry_parcels)». Вызывает ли pg_total_relation_size имена таблиц или нет? Похоже, что он ожидает названия столбца. «Могут быть рельсы, делающие что-то напуганное. Это полная команда: «ActiveRecord :: Base.connection.execute» SELECT pg_total_relation_size (horry_parcels) »' –