1

在 Postgres 上,我最近看到了一个案例,在单个事务中处理了大量的选择。这真的很慢,所以解决方案是将选择分成多个事务,这极大地缩短了查询时间。

有没有人遇到过这样的案例?这似乎违反直觉,我想知道为什么多笔交易更可取是否有技术原因?

我唯一的理论是,与单个庞大的事务相比,数据库更容易通过多个事务维护 ACID 属性。

4

1 回答 1

1

如果没有任何内容写入数据库,我不希望选择自己成为问题。在纯选择语句中没有任何锁定问题可言。有写入时会出现问题。

如果您有写入,您还必须处理 autovacuum 无法清理在最旧的写入事务启动后写入的项目的事实。

如果您遇到此类问题,调查锁 (in) 至关重要,pg_locks这样您就可以查看查询和函数并找出它们的来源。

请记住,aSELECT并不总是只是 a SELECT,而且很容易对性能问题的来源做出过多假设。

于 2013-11-08T01:47:17.457 回答