innodb-四种隔离级别

四种隔离级别


innodb有四种标准的隔离级别

READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE.

默认隔离级别是REPEATABLE READ

 

用户可以为一个session中或所有的connection设置事务隔离级别属性

 

 

innodb在不同的隔离级别下使用不同的锁策略,使用默认的RR级别对ACID要求合规的重要数据可以基本满足高度一致性。

 

 

如果对数据的一致性要求不高,可以使用较为松式的策略,例如:RC、RU

 

innodb-SERIALIZABLE隔离级别是一种最严格的规则,一般用于XA事务或解决并发死锁故障

 

 

RR级别


特性1.一致性读的方式是在第一次读时建立快照

特性2.在锁定读、update、delete时,加锁方式依赖于查询的方式,即是否是根据唯一索引查询, 如果是则锁定行,如果不是则可能会产生间隙锁

 

RC级别:


特性1.一致性读的方式是每次读取和更新都会刷新快照

特性2.在锁定读、update、delete时,加锁方式是只锁定索引记录,不锁间隙

特性3.在RC级别下binlog模式只支持row-based,即使配置了binlog_format=MIXED,实际也是采用row-based

特性4.在RC级别下,根据非索引字段更新,只会锁定where条件下对应的行,不会锁定全表行记录

在RC级别下,因为没有间隙锁的保护,这时会出现幽灵问题,也可以叫做幻读

RC级别作用和启用innodb_locks_unsafe_for_binlog配置类似,但两者也有区别:
1.innodb_locks_unsafe_for_binlog可以被设置成全局/所有session,但RC级别可以设置为所有session/单个session

2.innodb_locks_unsafe_for_binlog只能在mysql服务启动前设置,RC级别可以在服务运行时设置

 

RU级别:


特性.读取不具有一致性,存在脏读问题

 

 

SERIALIZABLE级别


特性.在atuocommit关闭的情况下,所有的select操作都会加共享锁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值