
《MysqL事务详解》要点:
本文介绍了MysqL事务详解,希望对您有用。如果有疑问,可以联系我们。
什么是事务(transaction)
保证成批 *** 作要么完全执行,要么完全不执行,维护数据的完整性.也便是要么成功要么失败.
事务可以是n条SQL语句(n>=0)
不是所有数据库引擎支持事务,InnoDB引擎支持事务处理
事务四大特性
原子性(Atomic):事务的所有所有 *** 作要么全部执行,要么全部不执行.如果中途出现错误不会停止,而是回滚到事务前的状态
一致性(Consistency):如果事务执行前是一致的,那么执行后也是一致的,不能破坏关系数据的完整性以及业务逻辑上的一致性,事务依照预期实现.
隔离性(Isolation):隔离性可以防止多个事务并发时导致数据的纷歧致
持久性(Durability):事务执行成功后对数据库的修改是永久的
事务并发不进行事务隔离
脏读:事务A读到未提交事务B修改的数据,如果此时事务B中途执行失败回滚,那么此时事务A读取到的就是脏数据.好比事务A对money进行修改,此时事务B读取到事务A的更新结果,但是如果后面事务A回滚,那么事务B读取到的就是脏数据了.
弗成重复读:同一个事务中,对同一份数据读取的结果不一致.事务A在事务B对数据更新前进行读取,然后事务B更新提交,事务A再次读取,这时候两次读取的数据不同.
幻读:同一个事务中,同一个查询多次返回的结果不一样.事务B查询表的记录数,然后事务A对表插入一条记录,接着事务B再次查询发现记录数分歧.
区别
脏读和弗成重复读:脏读是事务读取了还未提交事务的更新数据.弗成重复读是同一个事务中,几次读取的数据不同.
弗成重复读和幻读的区别:都是在同一个事务中,前者是几次读取数据不同,后者是几次读取数据整体不同.
隔离级别
| 隔离级别 | 作用 |
|---|---|
| Serializable(串行化) | 避免脏读、弗成重复读、幻读 |
| Repeatable(可重复读) | 避免脏读、弗成重复读 |
| Read committed(读已提交) | 避免脏读 |
| Read uncommitted(读未提交) | none |
微信扫一扫
支付宝扫一扫
评论列表(0条)