我想數據與使用JDBC ative WAL多核系統上的數據庫。我正在考慮在我的應用程序中產生多個線程來並行地插入數據。
如果應用程序有多個線程,我將不得不將隔離級別提高到Repeatable Read
,這在MVCC數據庫上應該映射到Snapshot isolation
。
如果我使用的是一個線程,我不需要隔離級別。據我所知,大多數Snapshot isolation
數據庫分析可能發生衝突的所有事務的寫集,然後回滾除真實衝突事務之外的所有事務。更具體的我正在談論Oracle,InnoDB和PostgreSQL。
1.)這種寫入集的分析是否昂貴?
2.)多線程插入以獲得更高的總吞吐量是否是一個好主意?真正的衝突幾乎是不可能的,因爲應用程序層提供線程衝突免費的東西。但是數據庫應該是一個安全網。
Oracle稱爲'Serializable'真的是'快照隔離',還是我誤解了?我不認爲這些數據庫都有真正的「Serializable」。 – 2011-06-14 13:11:12
這是快照隔離,因爲在讀取/更新時將SCN(系統更改號)與事務開始時的SCN進行比較。如果它檢測到更改,則會引發ORA-08177錯誤。 – 2011-06-14 13:16:38
好吧,我的多線程系統我需要Orcales'Serializable'。這仍然比一個線程便宜嗎? – 2011-06-14 13:28:58