mysql事务四大特性ACID及事物的隔离级别

一、原子性(Atomicity)、一致性(Consistent)、隔离性(Isalotion)、持久性(Durable),简称为ACID。

1.原子性(Atomic)

一个事务包含多个操作,这些操作要么全都执行,要么全都不执行,初中物理:原子是构成事物的最小单元,实现主要基于undo log。

2.一致性(Consistency)

事务使得系统从一个一致的状态转换到另一个一致的状态,实现主要基于redo log。

3.隔离性(Isolation)

事务间的读写靠MySQL的锁机制来保证隔离,事务间的写操作靠MVCC机制(快照读、当前读)来保证隔离性;MVCC全称是【Multi-Version ConCurrency Control】即多版本控制协议。

4.持久性(Durability)

事务的最终目的,即需要数据库层面保证,又需要应用层面进行保证,并且MySQL底层通过两阶段提交事务保证了事务持久化时的一致性(先刷写dolog日志,再进行page buffer刷写OS buffer再刷写到磁盘  或绕过OS buffer  直接刷到磁盘)。

page buffer刷写通过Innodb_flush_method控制

Innodb_flush_method=fsync  日志和数据缓冲区写磁盘,都走OS buffer(默认)

Innodb_flush_method=O_DIRECT  数据缓冲区写磁盘,不走OS buffer 日志走os buffer

Innodb_flush_method=O_DSYNC 日志缓冲区写磁盘,不走 OS buffer  数据走osbuffer

二、隔离级别

  • Read uncommitted:读取未提交,其他事务只要修改了数据,即使未提交,本事务也能看到修改后的数据值。
  • Read committed:读取已提交,其他事务提交了对数据的修改后,本事务就能读取到修改后的数据值。
  • Repeatable read:可重复读,无论其他事务是否修改并提交了数据,在这个事务中看到的数据值始终不受其他事务影响(默认)。
  • Serializable:串行化,一个事务一个事务的执行(效率低)。
# 未提交读级别
set session transaction isolation level read uncommitted;
# 已提交读级别
#全局
set global tx_isolation = 'READ-COMMITTED'
set global transaction isolation level read committed;
#会话
set tx_isolation = 'READ-COMMITTED'
set session transaction isolation level read committed;

# 可重复读级别(默认)
#全局
set global tx_isolation = 'REPEATABLE-READ'
set global transaction isolation level repeatable read;
#会话
set tx_isolation = 'REPEATABLE-READ'
set session transaction isolation level repeatable read;

# 可串行化级别(执行效率慢)
set session transaction isolation level serializable;


 


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值