如果您指的是检测“无效”(创建不良)索引,显然 Postgres 在尝试创建索引时可能“失败”,然后查询规划器不会使用它们,尽管它们存在于您的系统中。此查询将检测“失败”的索引:
https://www.enterprisedb.com/blog/pgupgrade-bug-invalid-concurrently-created-indexes
SELECT n.nspname, c.relname
FROM pg_catalog.pg_class c, pg_catalog.pg_namespace n,
pg_catalog.pg_index i
WHERE (i.indisvalid = false OR i.indisready = false) AND
i.indexrelid = c.oid AND c.relnamespace = n.oid AND
n.nspname != 'pg_catalog' AND
n.nspname != 'information_schema' AND
n.nspname != 'pg_toast'
Run Code Online (Sandbox Code Playgroud)
虽然我认为检测 TOAST 表索引不会有什么坏处,所以您可以删除查询的那部分 :)
相关,对我来说,有时只是在表上运行一个新的 ANALYZE 也会使索引突然开始在生产中使用(即,即使索引不是“无效”,它们也可能在 ANALYZE 运行之前未被使用)。奇怪的。
您是否尝试过vacuum full pg_class
以超级用户身份运行?
另外,自动真空吸尘器最终应该解决这个问题。您的对象似乎是临时表/索引,并且目录(通常)不像您的数据那样频繁更新。
归档时间: |
|
查看次数: |
3755 次 |
最近记录: |