sto*_*azy 5 postgresql postgresql-performance
我遇到过这样的情况:Pg 总是更喜欢对具有大约 70M 行的表进行顺序扫描。(索引扫描非常适合该查询,我已经通过设置enable_seq_scan = off确认了这一点,速度提高了200倍)
所以,为了帮助 Pg 更好地理解我的数据,我执行了这个
ALTER TABLE tablename ALTER COLUMN columnname SET STATISTICS 1000;
不幸的是,这需要更新独占锁来锁定整个表(锁太多)。
从您链接的文档中
设置统计数据
此形式为后续 ANALYZE 操作设置每列统计信息收集目标。目标可设置范围为0至10000;或者,将其设置为 -1 以恢复使用系统默认统计目标 (default_statistics_target)。有关 PostgreSQL 查询规划器使用统计信息的更多信息,请参阅第 14.2 节。
SET STATISTICS 获取SHARE UPDATE EXCLUSIVE 锁。
并且,在显式锁定的文档中
SHARE UPDATE EXCLUSIVE 与 SHARE UPDATE EXCLUSIVE、SHARE、SHARE ROW EXCLUSIVE、EXCLUSIVE 和 ACCESS EXCLUSIVE 锁定模式冲突。此模式可保护表免受并发架构更改和 VACUUM 运行的影响。
由 VACUUM(不带 FULL)、ANALYZE、CREATE INDEX CONCURRENTLY、ALTER TABLE VALIDATE 和其他 ALTER TABLE 变体获取(有关完整详细信息,请参阅 ALTER TABLE)。
因此,您无法在分析发生时更改架构或清理。所以呢?它们应该发生得很快。几乎是瞬间。
| 归档时间: |
|
| 查看次数: |
4442 次 |
| 最近记录: |