如何检查在 PostgreSQL 中存储我的 table 需要多少 pages/blocks?

How can I check how many pages/blocks are required for storing my table in PostgreSQL?

假设我们有一个 table PEOPLE。如何检查将其存储在 PostgreSQL 中需要多少 pages/blocks?

从系统目录中获取当前实际使用的块数pg_class:

SELECT oid::regclass AS tbl, relpages
FROM   pg_class
WHERE  relname = 'people'; -- or "PEOPLE"?

这只是主要关系。而且计数可能有些过时。不包括 TOAST、辅助关系或索引。但它包括任何数量的膨胀,可以使用 VACUUM FULL 或类似工具将其删除。更多:

带有 oid::regclass 的公式防止与 search_path 的任何混淆。如果 table 不可见(search_path 中的第一个),则输出为 schema-qualified.