首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我能安全地删除自动创建的Postgres索引吗?

我能安全地删除自动创建的Postgres索引吗?
EN

Drupal用户
提问于 2015-02-20 01:16:51
回答 1查看 48关注 0票数 0

使用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的索引安全吗?删除后,是否有一种简单的方法在需要时重新创建索引?

想要删除这些索引的原因是硬盘空间有限。删除这些索引将恢复大量的硬盘空间。

EN

回答 1

Drupal用户

发布于 2015-03-03 02:19:07

我使用以下PSQL查询来标识所有未使用的索引,并首先按最大值进行排序:

代码语言:javascript
运行
复制
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所需的资源较少。可能是因为需要更新的索引较少。

票数 0
EN
页面原文内容由Drupal提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://drupal.stackexchange.com/questions/149113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档