Bre*_*ham 1 sql postgresql mvcc
假设我要批量插入/更新/删除大量行(最少 100k,最多 20M),并且必须是原子的。
由于该事务所做的更改尚未提交,因此暂停大约 10-100k 操作以ANALYZE在同一事务中运行实际上是否会通知查询规划器任何信息?
从逻辑上讲,想象一个客户正在做这样的事情:
BEGIN;
(for i, record in records)
INSERT ...
DELETE ...
UPDATE ...
(if i % 10000 == 0)
ANALYZE;
(end)
(end loop)
COMMIT;
Run Code Online (Sandbox Code Playgroud)
对正在运行的事务的查询计划程序有ANALYZE什么好处,或者它只会收集已提交行的统计信息吗?
ANALYZE 将看到同一事务中先前所做的更改。但只有同一笔交易才会使用这些新收集的统计数据。其他事务将继续使用先前的统计信息(直到大型事务提交,然后它们将获取包括现在提交的行的新统计信息)。
| 归档时间: |
|
| 查看次数: |
1005 次 |
| 最近记录: |