Následující výběrový dotaz vrátí celou tabulku a její velikost
SELECT
relname as mytable,
pg_size_pretty(pg_relation_size(relid)) As size
FROM pg_catalog.pg_statio_user_tables ORDER BY pg_total_relation_size(relid) DESC;
Vytvořte VIEW s tímto výběrem
CREATE VIEW vTableAndSize AS
SELECT
relname as mytable,
pg_size_pretty(pg_relation_size(relid)) As size
FROM pg_catalog.pg_statio_user_tables ORDER BY pg_total_relation_size(relid) DESC;
a nyní se můžete dotazovat na tento pohled a získat velikost jako je tato
SELECT mytable,size
FROM vTableAndSize WHERE mytable in ('table1','table2')
Podle Komentář OP
CREATE VIEW vTableAndSize_1 as
SELECT
relname as mytable,
(pg_relation_size(relid)) As size
FROM pg_catalog.pg_statio_user_tables ORDER BY pg_total_relation_size(relid) DESC;
a získat součet velikostí více sloupců pomocí
/* Get sum of specific tables */
SELECT pg_size_pretty(sum(size)) tablesizesum
FROM vTableAndSize_1 WHERE mytable in ('table1','table2')
/* Get sum of all tables */
SELECT pg_size_pretty(sum(size)) tablesizesum
FROM vTableAndSize_1
Vytvořte vTableAndSize_1
ve vašem PostgreSQL
databáze a dotaz jako níže ve vašem rozhraní (nejsem obeznámen s Ruby
)
ActiveRecord::Base.connection.execute("SELECT pg_size_pretty(sum(size)) FROM vTableAndSize_1
WHERE mytable in ('table1','table2')")