我试图在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