有一个连接begin;
delete from edoor where dcode="0015";这里开起另一连接,set tx_isolation=SERIALIZABLE;
select * from edoor where dcode="0015";请问应该是什么结果?我测试的结果是,依然可以查询到这条数据?
我本来以为SERIALIZABLE会将所有无格式SELECT语句被隐式转换成SELECT ... LOCK IN SHARE MODE,所以应该一起等着上边的事务结束才对,可是结果不是这样我再第二个连接中再做如下测试:
set tx_isolation=SERIALIZABLE;
begin;
select * from edoor where dcode="0015";
这个会等。我再测试:
set tx_isolation=REPEATABLE-READ;
begin;
select * from edoor where dcode="0015";这时不会等。这不是等同于说SERIALIZABLE级别,只有在事务中,才会将select隐式的加上LOCK IN SHARE MODE我想要的结果是:所有的select都要读到另一务提交之后的结果,我又不想显示的加上LOCK IN SHARE MODE,有什么办法?
可是我测试了四种级别,比如:
READ UNCOMMITTED,即使我不起事务它也一样会起做用(读不到删除那条记录即脏读)还有就是好象,只要在select语句中显示加上LOCK IN SHARE MODE,不管在任何级别,起不起事务,这个语句总会等delete那个事务结束才返回结果谁能帮我彻底清晰分析一下这四个级别准确含义及具体应用,谢谢
delete from edoor where dcode="0015";这里开起另一连接,set tx_isolation=SERIALIZABLE;
select * from edoor where dcode="0015";请问应该是什么结果?我测试的结果是,依然可以查询到这条数据?
我本来以为SERIALIZABLE会将所有无格式SELECT语句被隐式转换成SELECT ... LOCK IN SHARE MODE,所以应该一起等着上边的事务结束才对,可是结果不是这样我再第二个连接中再做如下测试:
set tx_isolation=SERIALIZABLE;
begin;
select * from edoor where dcode="0015";
这个会等。我再测试:
set tx_isolation=REPEATABLE-READ;
begin;
select * from edoor where dcode="0015";这时不会等。这不是等同于说SERIALIZABLE级别,只有在事务中,才会将select隐式的加上LOCK IN SHARE MODE我想要的结果是:所有的select都要读到另一务提交之后的结果,我又不想显示的加上LOCK IN SHARE MODE,有什么办法?
可是我测试了四种级别,比如:
READ UNCOMMITTED,即使我不起事务它也一样会起做用(读不到删除那条记录即脏读)还有就是好象,只要在select语句中显示加上LOCK IN SHARE MODE,不管在任何级别,起不起事务,这个语句总会等delete那个事务结束才返回结果谁能帮我彻底清晰分析一下这四个级别准确含义及具体应用,谢谢
解决方案 »
- mysql 集合语法
- my.ini文件设置日志文件后读文件出错
- mysqldump 运行时间
- 简单的MySql报错
- 前两天装了一个开源的项目建了一堆表 用外建关联在一起删不了??
- 請教:下載了 mysql4.1.0-win32-apache.zip ,解壓後發現沒有setup文件,我以前裝的mysql3.2.3安裝過後的目錄一樣,不知4.1的是如何安裝
- Host 'xxxxxx' is blocked because of many connection errors. Unblock with 'mysqladmin flush-hosts' 怎么办
- 如何制定某个分区查询
- 从hdfs中导出数据到mysql中在navicat显示乱码怎么办?
- 一个表里有5000万条数据 快速查询某一条.
- 我想设计一个跟网易一样的跟帖系统?请高手帮忙
- redhat linux7.3下安装mysql-5.0.22时错误
至于隔离级别手册上讲的很清楚。仔细看一下。
所有的select都要读到另一务提交之后的结果,我又不想显示的加上LOCK IN SHARE MODE,有什么办法?