postgresql - postgresql 重建索引和重新创建索引有什么区别,哪个更好?
问题描述
我有一个索引大小太大(大约 2G)的表。当我将数据库恢复到虚拟机时,大小只有 200M,所以我需要重建/重新创建索引,我可能会在线执行此操作。
重新构建(reindex)和重新创建索引有什么区别,我在网上做的时候哪个更好?特别是,哪个选项允许在操作期间查询数据库?
解决方案
该REINDEX
命令需要一个独占表锁,这意味着它将停止对表的任何访问,直到命令完成。如果您能负担得起这种维护窗口,那就太好了。
在线重建的替代方法是使用 创建一个新索引CREATE INDEX CONCURRENTLY
,然后删除旧索引。这将需要更长的时间才能完成,但允许在重建索引时访问表。
推荐阅读
- python - 使用一个 glob.glob 而不是多个 glob.glob
- sql - 根据列中的日期值排除日期
- android - TextView:删除顶部和底部的间距和填充
- python - 是否可以使用 numpy 计算递归数据
- web - 将旧的 http 单页重定向到全新的 https 域的正确方法是什么?
- python - Django 2.1.4 注册表+登录页面
- django - Docusign API:标签错误地应用于其他文档和字段
- c# - 如何在 Unity 的固定对撞机数组中随机实例化预制件?
- javascript - 无需更改即可触发道具监视
- html - 在css中设置特殊字符的位置