如何测量 Postgres 索引占用的磁盘 space?
How do I measure disk space occupied by a Postgres index?
我在 Mac Sierra 上使用 Postgres 9.5.1。我在 table
上创建了以下索引
CREATE INDEX my_object_times_name_gin_trgm_idx
ON my_object_times USING gin (name gin_trgm_ops);
我如何衡量这个索引占用了多少磁盘空间space?我想将此与创建另一种类型的索引时将被起诉的 space 进行比较。注意,我不关心table中数据的大小,只关心索引占用的存储量。
您会在这里找到一些有趣的脚本:Disk Usage
SELECT d.datname AS Name, pg_catalog.pg_get_userbyid(d.datdba) AS Owner,
CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')
THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))
ELSE 'No Access'
END AS SIZE
FROM pg_catalog.pg_database d
ORDER BY
CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')
THEN pg_catalog.pg_database_size(d.datname)
ELSE NULL
END DESC -- nulls first
LIMIT 20
您可以使用 pg_relation_size()
,例如:
select pg_relation_size('my_object_times_name_gin_trgm_idx');
大小以字节为单位。如果你想以 "human readable" 的方式格式化,你可以使用 pg_size_pretty()
select pg_size_pretty(pg_relation_size('my_object_times_name_gin_trgm_idx'));
我在 Mac Sierra 上使用 Postgres 9.5.1。我在 table
上创建了以下索引CREATE INDEX my_object_times_name_gin_trgm_idx
ON my_object_times USING gin (name gin_trgm_ops);
我如何衡量这个索引占用了多少磁盘空间space?我想将此与创建另一种类型的索引时将被起诉的 space 进行比较。注意,我不关心table中数据的大小,只关心索引占用的存储量。
您会在这里找到一些有趣的脚本:Disk Usage
SELECT d.datname AS Name, pg_catalog.pg_get_userbyid(d.datdba) AS Owner,
CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')
THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))
ELSE 'No Access'
END AS SIZE
FROM pg_catalog.pg_database d
ORDER BY
CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')
THEN pg_catalog.pg_database_size(d.datname)
ELSE NULL
END DESC -- nulls first
LIMIT 20
您可以使用 pg_relation_size()
,例如:
select pg_relation_size('my_object_times_name_gin_trgm_idx');
大小以字节为单位。如果你想以 "human readable" 的方式格式化,你可以使用 pg_size_pretty()
select pg_size_pretty(pg_relation_size('my_object_times_name_gin_trgm_idx'));