Mysql的事务是什么?什么是脏读?幻读?不可重复读?
Posted qq_53667037
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql的事务是什么?什么是脏读?幻读?不可重复读?相关的知识,希望对你有一定的参考价值。
事务
就是将一组SQL语句放在同一批次内去执行,如果一个SQL语句出错,则该批次内的所
有sql语句都将被取消执行 事务的四大特性
事务的四大特性
原子性(Atomic):
事务执行,即不可再分,要么不执行
一致性(Consist):
事务开始之前和事务结束后,数据库的完整性约束没有被破环
隔离性(Isolated):
事务的执行是互不干扰的,一个事务不可能看到其他事务运行时,中间
某一时刻的数据
持久性(Durable):
事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库
中,并不会被回滚
脏读
读取了未提交的新事物,然后被回滚了
事务A读取了事务B尚未提交的数据,如果事务B回滚,则A读取使用了错误的数据
解决 事务在读的时候,禁止读取未提交的事务
幻读
在事务A多次读取构成中,事务B对数据惊醒了新增操作,导致事务A多次读取的数据不一致
不可重复读
事务B读取两次数据资源,子啊这两次的过程中事务A修改了数据,导致事务B在两次的读取
出来的数据不一致。
事务的隔离级别
为了解决以上问题,关系型数据库提供给四种事务的隔离级别:读未提交,读已提交,可重复读,串行化,级别越高越能保证数据的完整性和一致性,但执行效率也越低
读未提交
所有的事务都可以看到其他未提交的事务的执行结果,不能解决脏读,幻读,可重复读
读已提交
一个事务的更新操作结果只有在该事务提交之后,另一个事务才可能读到同一数据的更
新后的结果 ,可以防止脏读。
可重复读
一个事务多尺度同一个数据,在这个事务还没结束时,其他事务不能访问该数据,这样
就可以在同一事物内两次读到的数据是一样的 ,可以防止脏读和不可重复读。
串行化
事务只能一个接着一个地执行,不能并发执行。
以上是关于Mysql的事务是什么?什么是脏读?幻读?不可重复读?的主要内容,如果未能解决你的问题,请参考以下文章