今天看书看到孤立性等级的时候有四个等级:序列化 可重复读 提交的读 未提交的读
其中的可重复读有说到这样一种情况“虚拟读”或“虚拟插入”,其中有这样一段话是这样的
可重复读和序列化孤立级很相似,可它有一个很重要的不同点:虽然一个事务不能看到其他正在执行的当前事务做出的变化,但是它可以看到新的记录(其他事务添加到数据库的)。这有时被称作虚拟读或者虚拟插入,因为只在事务用过INSERT语句向数据库插入一个新纪录时它才发生。当执行一个SELECT查询是,其他同一时间正在进行的事务将会突然看到这个新的虚幻的行。可我进行了一下试验,发现好像并不是这样的。
我打开了两个事务,假设为A和B,分别设置其事务孤立级为REPEATABLE READ。 完了在A事务中输入start transaction,接着向表test中INSERT一条新的记录,可是此时在B事务中对表TEST进行SELECT并不能看到新加入的数据,只有在A事务中COMMIT以后,在B事务中SELECT才可以看到新插入的记录。请教一下是我对可重复读这种孤立级的理解有问题还是我测试的方法有问题?谢谢
其中的可重复读有说到这样一种情况“虚拟读”或“虚拟插入”,其中有这样一段话是这样的
可重复读和序列化孤立级很相似,可它有一个很重要的不同点:虽然一个事务不能看到其他正在执行的当前事务做出的变化,但是它可以看到新的记录(其他事务添加到数据库的)。这有时被称作虚拟读或者虚拟插入,因为只在事务用过INSERT语句向数据库插入一个新纪录时它才发生。当执行一个SELECT查询是,其他同一时间正在进行的事务将会突然看到这个新的虚幻的行。可我进行了一下试验,发现好像并不是这样的。
我打开了两个事务,假设为A和B,分别设置其事务孤立级为REPEATABLE READ。 完了在A事务中输入start transaction,接着向表test中INSERT一条新的记录,可是此时在B事务中对表TEST进行SELECT并不能看到新加入的数据,只有在A事务中COMMIT以后,在B事务中SELECT才可以看到新插入的记录。请教一下是我对可重复读这种孤立级的理解有问题还是我测试的方法有问题?谢谢
解决方案 »
- sybase sql anywhere5.5谁有
- MYSQL MSSQL互相访问?
- sql查询问题 问题继续?group_contact()函数的使用
- 请大家不要把手册上的文章原封不动的发过来。
- 如何解决mysql极限问题
- 请教,linux中,MySql里如何中断正在select的查询过程。
- mysql怎麽把字段怎么改为允许为空???求解
- 求解答:MySQL图状结构的表的遍历问题
- MySQL 存储过程 调用失败 求指点
- mysql中的select count(*) from user where username='%ss%'查询返回的值是0
- Mysql 四舍五入 怪事!!!!
- 局域网通过CMD怎么连接另一台电脑的MYSQL,两个系统都是WINDOW XP?
假如A还没commit, 就可以看到, 那就是read_uncommit了
发现和表的类型有关系
比如说我把表改为HEAP或者MYISAM时,A事务进行数据修改后即便不COMMIT时B事务就可以读取到数据的变化,而此时我查@@tx_isolation变量发现此时的孤立级别仍然设置的是READ-REPEATABLE比较奇怪,呵呵
以前我在看ORACLE文档的时候就被搞得头昏昏的我最近看的是本叫《MYSQL完全手册》的书
有些英文翻成中文也比较晦涩难理解
如果将来需要用的到MYSQL我再深入的学好了