什么是最好的(为了性能)事务隔离级别?

use*_*521 0 postgresql postgresql-9.3

在我的应用程序中执行了两种类型的查询:

DELETE FROM tbl1 WHERE user_id = 1;
INSERT INTO tbl1 VALUES (...), (...), ...;
Run Code Online (Sandbox Code Playgroud)

UPDATE tbl2 WHERE id = 1 SET ...;
DELETE FROM tbl3 WHERE tbl2_id = 1;
INSERT INTO tbl3 VALUES (...), (...), ...;
DELETE FROM tbl4 WHERE tbl2_id = 1;
INSERT INTO tbl4 VALUES (...), (...), ...;
Run Code Online (Sandbox Code Playgroud)

我使用的 ORM 自动将事务隔离级别设置为REPEATABLE READ,我想知道它是否是最佳性能的正确选择。我的目标是只执行全部或不执行(来自上面的 2 个事务),我不关心任何读取...

那么在我的情况下哪种隔离级别最适合最佳性能?

Cra*_*ger 6

READ COMMITTED 由于 PostgreSQL 不必进行依赖项跟踪,因此施加的开销更少。

在实践中,差异可能很小。

应该根据正确性而不是性能来选择隔离级别。无法READ COMMITTED从提供的查询中确定是否足够,但我认为没有充分的理由怀疑它是否足够。

在使用隔离级别之类的东西之前,几乎可以肯定还有许多其他方法可以提高性能。