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 个事务),我不关心任何读取...
那么在我的情况下哪种隔离级别最适合最佳性能?
READ COMMITTED
由于 PostgreSQL 不必进行依赖项跟踪,因此施加的开销更少。
在实践中,差异可能很小。
应该根据正确性而不是性能来选择隔离级别。无法READ COMMITTED
从提供的查询中确定是否足够,但我认为没有充分的理由怀疑它是否足够。
在使用隔离级别之类的东西之前,几乎可以肯定还有许多其他方法可以提高性能。