感觉脏读违反了事务的隔离性,请教 一个事务读取另一个事务未提交的内容,称为脏读。但事务的隔离性定义中又有这样的描述:“当前事务不会查看由另一并发事务正在修改的数据。“在脏读时,一个事务读取了另一个事务未提交的内容,难道未提交的内容不算是另一并发事务正在修改的数据吗?如果不算,事务的隔离性如何体现呢,什么才算是”事务正在修改的数据?自学Mysql中,有些抽象的概念还是有些模糊,希望各位高人不吝赐教。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一个事务读取另一个事务未提交的内容,称为脏读。这个问题就是 因为没有提交,比如,一条数据有个字段 v,现在有个事务A把这个v从10改成了100,但是呢,没有commit,这个时候另一个事务B 如果读取了值,也就是100,而这个时候,刚才事务A因为其他原因 把事务rollback了,那么这时候事务B读取到的就是不准确的数据,这就是脏读。当然,如果事务A最后提交了,那么事务B读取到的也是正确的数据,但这个也是脏读。所以,是不是脏读和 读取到的数据是否正确没有关系,只是说 读取到的是 不确定的数据。 另外,在mysql中是无法读取到脏数据的,因为myisam存储引擎是 表级别的锁,并发性很差。而innodb存储引擎,支持mvcc,多版本并发控制,你读取到的 总是已提交的数据。而在oracle中也是如此。那么现在说到 能读取脏数据,那只有 sql server了,你可以在查询中指定 nolock,或者 指定隔离级别为 read uncommitted,这个就是脏读,也就是说 可以读取到未提交的数据,那么好处是 在读取数据时 不需要 读锁,所以不会被修改数据的事务 锁定。 我也一直弄不明白这个概念上的定义。事务A读取了事务B中正在修改的数据。那么事务A本身就违背了自身的隔离性原则。它还算是个事务吗? 读取了事务B中正在修改的数据。事务隔离级别为未提交(uncommited)读才会这样cmmited级别不会出现脏读。 事务的隔离性并不是:A事务修改的东西,B看不到。这句话只是事务的隔离性中的隔离级别之一什么违反了隔离性简直是谬论,最低的一层隔离级别的时候,A事务修改的东西,B当然看得到! 在mysql中如何实现读取事务“未提交”的数据呢?Read Uncommitted读未提交级别可以实现吗?SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; 请教SQL问题 求一个Sql啊~如何删除~除了pk外,其他字段都相同的行呢? 表访问频率 关于同一字段多作者统计发文的请教 mysql 构造字段field 类型问题 mysql百万数据查询速度过慢 MYSQL的编码问题 我在linux下安装了mysql后,不能启动,(我这个问题情况特殊,和其他的不能启动的问题好象不同,请斑竹高抬贵手) 求助!MySQL数据库密码问题! 求助。有没有人用过heidisql的 像这个统计信息想给他清空掉要怎么清 Mysql设置默认编码集为UTF-8,仍无法输入中文,求解 mysql Truncated incorrect DOUBLE value: ''
一个事务读取另一个事务未提交的内容,称为脏读。这个问题就是 因为没有提交,比如,一条数据有个字段 v,现在有个事务A把这个v从10改成了100,但是呢,没有commit,这个时候另一个事务B 如果读取了值,也就是100,而这个时候,刚才事务A因为其他原因 把事务rollback了,那么这时候事务B读取到的就是不准确的数据,这就是脏读。当然,如果事务A最后提交了,那么事务B读取到的也是正确的数据,但这个也是脏读。所以,是不是脏读和 读取到的数据是否正确没有关系,只是说 读取到的是 不确定的数据。
另外,在mysql中是无法读取到脏数据的,因为myisam存储引擎是 表级别的锁,并发性很差。而innodb存储引擎,支持mvcc,多版本并发控制,你读取到的 总是已提交的数据。而在oracle中也是如此。那么现在说到 能读取脏数据,那只有 sql server了,你可以在查询中指定 nolock,或者 指定隔离级别为 read uncommitted,这个就是脏读,也就是说 可以读取到未提交的数据,那么好处是 在读取数据时 不需要 读锁,所以不会被修改数据的事务 锁定。
cmmited级别不会出现脏读。
这句话只是事务的隔离性中的隔离级别之一
什么违反了隔离性简直是谬论,最低的一层隔离级别的时候,A事务修改的东西,B当然看得到!
在mysql中如何实现读取事务“未提交”的数据呢?
Read Uncommitted读未提交级别可以实现吗?
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;