使用Postgres 9.3数据库运行Drupal7.x。
添加新字段时,似乎为每个新字段创建了8个数据库索引。运行查询"select * from pg_stat_all_indexes;“显示,实际使用的8个索引中只有2-3个.主要是field_data_field_XXXXX_entity_id_idx和field_data_field_XXXXX_pkey。所有其他索引(例如,...bundle_idx,.deleted_idx,...( language_idx等)为idx_scan、idx_tup_read和idx_tup_fetch显示0。
删除显示0的索引安全吗?删除后,是否有一种简单的方法在需要时重新创建索引?
想要删除这些索引的原因是硬盘空间有限。删除这些索引将恢复大量的硬盘空间。
发布于 2015-03-03 02:19:07
我使用以下PSQL查询来标识所有未使用的索引,并首先按最大值进行排序:
SELECT nspname || '.' || C.relname AS "relation",
pg_relation_size(C.oid) AS "size",
idx_scan,
idx_tup_read,
idx_tup_fetch
FROM pg_class C
LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
LEFT JOIN pg_stat_all_indexes stat ON C.relname = stat.indexrelname
WHERE nspname NOT IN ('pg_catalog', 'information_schema')
ORDER BY pg_relation_size(C.oid) DESC
我删除了几十个索引。到目前为止还没有问题。似乎性能可能有所提高,因为我注意到CPU所需的资源较少。可能是因为需要更新的索引较少。
https://drupal.stackexchange.com/questions/149113
复制相似问题