PostgreSQL大单个事务比多个事务慢

时间:2013-08-09 03:35:42

标签: postgresql postgresql-performance

在Postgres上,我最近看到一个案例,在一次交易中有大量的选择被处理。这真的很慢,因此解决方案是将选择分解为多个事务,这大大缩短了查询时间。

有没有人遇到过这种情况?这似乎反直觉,我想知道为什么多个交易更可取的技术原因?

我唯一的理论是,DB更容易维护具有多个事务的ACID属性,而不是单个庞大的事务。

1 个答案:

答案 0 :(得分:0)

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

如果你有写入,你还必须处理这样一个事实:autovacuum无法清理在最早的写入事务开始后写入的项目。

如果你看到这样的问题,调查锁(在pg_locks中)是至关重要的,这样你就可以查看查询和函数,并找出它们的来源。

请注意,SELECT并不总是SELECT,而且很容易对性能问题的来源过多地假设。