簡體   English   中英

為什么 TRANSACTION_READ_COMMITTED 是 Java 中的默認值?

[英]Why is TRANSACTION_READ_COMMITTED the default in Java?

事務教程在“ 使用事務來保護數據完整性”一節中進行了解釋:

默認事務隔離級別取決於您的 DBMS。 例如,對於 Java DB,它是 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

為什么最佳選項不是默認值?

事務安全性和性能之間存在反比關系。
如果您選擇最好的隔離級別,您也會得到最差的性能。
你必須在兩者之間做出權衡

有關詳細信息,請參閱此基准

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM