我在Mac Sierra上使用Postgres 9.5.1。我在我的表上创建了以下索引
CREATE INDEX my_object_times_name_gin_trgm_idx
ON my_object_times USING gin (name gin_trgm_ops);
如何衡量此索引在磁盘上占用的磁盘空间?我想比较一下,如果我创建另一种类型的索引,那将会被起诉。请注意,我不关心表中数据的大小,只关心索引占用的存储空间。
答案 0 :(得分:5)
您可以使用pg_relation_size()
,例如:
select pg_relation_size('my_object_times_name_gin_trgm_idx');
大小以字节为单位。如果您希望以“人类可读”的方式格式化,可以使用pg_size_pretty()
select pg_size_pretty(pg_relation_size('my_object_times_name_gin_trgm_idx'));
答案 1 :(得分:0)
您可以在此处找到一些有趣的脚本: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