事务和事务隔离级别

#事务及事务特性
#什么是事务
#事务特性:
- 原子性(atomicity)
- 一致性(consistency)
- 隔离性(isolation)
- 持久性(durability)

#事务并发引起的问题
- 脏读 (读取后其他事务回滚)
- 不可重复读 (update)
- 幻读 (insert)

#事务问题严重程度排名
- 脏读>不可重复读>幻读

#事务隔离级别
#SQL92标准中的隔离级别
- READ UNCOMMITTED:未提交读
- READ COMMITTED:已提交读
- REPEATABLE READ:可重复读
- SERIALIZABLE:可串行化

隔离级别脏读不可重复读幻读
READ UNCOMMITTED:未提交读可能可能可能
READ COMMITTED:已提交读-可能可能
REPEATABLE READ:可重复读--可能
SERIALIZABLE:可串行化---

#MySQL中的隔离级别
- READ UNCOMMITTED: 未提交读
- READ COMMITTED: 已提交读
- REPEATABLE READ: 可重复读
- SERIALIZABLE: 可串行化

隔离级别脏读不可重复读幻读
READ UNCOMMITTED: 未提交读可能可能可能
READ COMMITTED: 已提交读-可能可能
REPEATABLE READ:可重复读---
SERIALIZABLE:可串行化---

#如何设置MySql的隔离级别
- SHOW VARIABLES LIKE 'transaction_isolation';
- SET GLOBAL TRANSACTION ISOLATION LEVEL SERIALIZABLE;

#MySQL事务
- 开启事务: begin/start transaction
- 自动提交事务:autocommit ON(手动:OFF=0)
- 事务的基本语法
- 保存点(savepoint) rollback to savepoint xxx
- 隐式提交(注意事项):一些其他的语句(不是commit,不是rollback) 自动提交了。
>DDL语句:create、alter、drop(事务内不要执行,否则会造成隐式提交)
>再执行begin也会造成隐式提交

#MVCC与版本链 并发度很高,一致性读,快照读
- 版本链 存放在undo_log 日志中,后面一个指向前一个

#ReadView
- m_ids: 当前活跃的事务ID
- min_trx_id
- max_trx_id
- creator_trx_id:生成事务的ID

#READ COMMITTED: 已提交读
- ReadView多版本控制避免脏读

#REPEATABLE READ:可重复读
- ReadView多版本控制避免不可重复读,无法全部避免幻读。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值