问题描述
我正在尝试获取以下查询的输出并将索引传递给另一个将执行重新索引的查询。最终目标是安排一个夜间作业,将重新索引前 5 或 10 个“最碎片化”的索引。我们的应用程序是高度事务性的,并且可能相当大,因此我们无法每晚对所有表进行重新索引。此外,我们运行 postgres 11(所以并发)不是一个选项。
...
SELECT i.indexrelid::regclass
--,s.leaf_fragmentation
FROM pg_index AS i
JOIN pg_class AS t ON i.indexrelid = t.oid
JOIN pg_opclass AS opc ON i.indclass[0] = opc.oid
JOIN pg_am ON opc.opcmethod = pg_am.oid
CROSS JOIN LAteraL pgstatindex(i.indexrelid) AS s
WHERE t.relkind = 'i'
AND pg_am.amname = 'btree'
AND s.leaf_fragmentation > 30
AND s.leaf_fragmentation != 'NaN'
AND left(relname,3) !='pg_'
ORDER BY leaf_fragmentation desc
LIMIT 10
...
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)