📜  postgres 检查大小表 (1)

📅  最后修改于: 2023-12-03 15:33:44.490000             🧑  作者: Mango

Postgres:检查大小表

在PostgreSQL中,您可以轻松地检查数据库中的所有表的大小,以便可以识别和处理占用过多空间的表。在本文中,我们将介绍如何在PostgreSQL中检查表的大小。

步骤

以下是在PostgreSQL中检查表大小的步骤:

  1. 连接到您的PostgreSQL服务器。

  2. 打开查询工具,例如 psql 命令行工具。

  3. 运行以下命令,以获取数据库中所有表的大小信息:

SELECT relname AS table_name,
    pg_size_pretty(pg_total_relation_size(relid)) AS total_size
FROM pg_catalog.pg_statio_user_tables 
ORDER BY pg_total_relation_size(relid) DESC;

上述查询将返回您的数据库中的所有表及其占用的空间大小。

进一步的查询

您还可以进一步筛选表,以检查特定表的大小信息。例如,以下查询将显示名为 "orders" 的表的大小:

SELECT pg_size_pretty(pg_total_relation_size('orders')) AS total_size;

或者,您可以使用以下命令列出数据库中每个表的前10个最大行:

SELECT relname AS table_name, 
    pg_size_pretty(pg_table_size(relid)) AS table_size,
    pg_size_pretty(pg_total_relation_size(relid) - pg_table_size(relid)) AS table_external_size,
    (pg_total_relation_size(relid) - pg_table_size(relid))::FLOAT / NULLIF(pg_table_size(relid), 0)::FLOAT AS external_size_ratio,
    n_tup_ins AS num_rows_inserted
FROM pg_catalog.pg_statio_user_tables
    JOIN pg_catalog.pg_class ON pg_statio_user_tables.relid = pg_class.oid
WHERE relname NOT LIKE 'pg_%' and relname NOT LIKE 'sql_%'
ORDER BY pg_total_relation_size(relid) DESC
LIMIT 10;

上述查询将返回该数据库中每个表的大小信息及其前十行信息。

结论

在本文中,我们介绍了如何在PostgreSQL中检查数据库中所有表的大小。您可以轻松地使用上述命令识别和处理占用过多空间的表,进而改善PostgreSQL的性能。