首页 笔记 图片 查字 
所属分类:MySQL
浏览:66
内容:

1. MySQL事务特性
原子性:Atomicity,一个事务是一个不可再分割的整体,要么全部成功,要么全部失败。
一致性:Consistency,一个事务可以让数据从一种一致状态切换到另一种一致性状态。
隔离性:Isolution,一个事务不受其他事务的影响,并且多个事务彼此隔离。
持久性:Durability,一个事务一旦被提交,在数据库中的改变就是永久的,提交后就不能再回滚。

2. MySQL事务隔离级别
读未提交:RU(Read Uncommitted)
一个事务可以读到其他事务已修改但尚未提交的数据,脏读。安全性最低,并发度(无锁)最高。

读已提交:RC(Read Committed)
一个事务中只可以读到已提交的数据,过程中如果数据被其他事务修改并提交,则当前事务再次读时,读到的是已修改后的数据,即不可重复读。

可重复读:RR(Repeatable Read)
一个事务读取到的数据值始终不受其它事务影响,不够其它事务是否修改并提交数据。
如果事务开始时不存在的数据,其它事务提交后,当前事务可以读到,即产生幻读。
mysql在RR隔离级别下使用next-key锁解决了幻读问题。

序列化/串行:Serializable
事务串行执行,安全性最高,并发度最低。

3. MySQL事务隔离性(并发)问题
脏读:指一个事务读取到了另外一个事务未提交的数据。
     指一个事务读取了数据并且修改了数据,还没有提交到数据库,这时候另外一个事务读取了数据,并使用了这个数据。
不可重复读(虚读):指一个事务读取到了另外一个事务提交的update的数据。
     指一个事务多次读同一批数据,还没有结束时,另一事务修改了这一批数据,造成第一个事务读取的数据不一致。
幻读:指一个事务读取到了另外一个事务提交的insert的数据。
     指一个事务在修改一批数据时候,另一个事务插入了一条数据,造成第一个事务以为有数据没有被修改。