我試圖在Java中使用Java和JDBC創建幻像讀取。我有以下的交易幻影在InnoDB,MyISAM和其他引擎中讀取
交易1:
String[] querySetOne = new String[5];
querySetOne[0] = "use adventureworks";
querySetOne[1] = "select * from vendorcontact where ContactTypeID between 10 and 30";
querySetOne[2] = "select sleep(20)";
querySetOne[3] = "select * from vendorcontact where ContactTypeID between 10 and 30";
querySetOne[4] = "COMMIT";
事務2:
String[] querySetTwo = new String[4];
querySetTwo[0] = "use adventureworks";
querySetTwo[1] = "select sleep(2)";
querySetTwo[2] = "insert into vendorcontact values (105, 700, 20, NULL)";
querySetTwo[3] = "COMMIT";
我試圖創建一個幻影使用的是InnoDB數據庫引擎的可重複讀隔離級別讀取,但我現在的理解是,MySQL使用快照隔離與REPEATABLE READ和SERIALIZABLE隔離級別相結合。 然後我把我的數據庫引擎切換到MyISAM,發現它沒有演示任何併發控制;當我使用MyISAM時,丟失的更新,不可重讀的讀取,髒讀取和幻像出現在所有隔離級別上。我有幾個問題:
- 什麼數據庫引擎可以使用,將使用併發控制但沒有快照隔離,我將如何得到它?
- 有沒有辦法在InnoDB中打開快照隔離?
- 爲什麼MyISAM上發生的所有異常,它實際上不支持任何類型的併發控制,或者我只是愚蠢?
看看這個問題:[如何產生幻像讀取?](http://stackoverflow.com/questions/5444915/how-to-produce-phantom-reads) – 2012-03-26 23:04:57
MyISAM不是一個事務引擎。 – 2012-03-26 23:05:32