gpt4 book ai didi

java - 为什么 TRANSACTION_READ_COMMITTED 是 Java 中的默认值?

转载 作者:行者123 更新时间:2023-12-05 02:50:25 26 4
gpt4 key购买 nike

交易教程在Using Transactions to Preserve Data Integrity一节解释:

The default transaction isolation level depends on your DBMS. For example, for Java DB, it is TRANSACTION_READ_COMMITTED.

对于我的 Postgresql 数据库,它是一样的。但这似乎不是最好的,因为只有TRANSACTION_SERIALIZABLE防止所有不一致:

Isolation Level             │Transactions │Dirty Reads   │Non-Repeatable Reads│Phantom Reads
=============================================================================================
TRANSACTION_NONE │Not supported│Not applicable│Not applicable │Not applicable
TRANSACTION_READ_COMMITTED │Supported │Prevented │Allowed │Allowed
TRANSACTION_READ_UNCOMMITTED│Supported │Allowed │Allowed │Allowed
TRANSACTION_REPEATABLE_READ │Supported │Prevented │Prevented │Allowed
TRANSACTION_SERIALIZABLE │Supported │Prevented │Prevented │Prevented

为什么最佳选项不是默认值?

最佳答案

交易安全与性能之间存在反比关系。
如果您选择最佳隔离级别,您也会获得最差的性能。
你必须做一个 trade-off两者之间。

查看此 benchmark了解更多详情。

关于java - 为什么 TRANSACTION_READ_COMMITTED 是 Java 中的默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63683580/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com