1 mysql事务机制

 1.1 事务定义

一次执行多个sql,且其中有写操作,会对原始数据进行修改。

 1.2 事务特性

 1.2.1 原子性(A)

所有操作,或者全部完成,或者全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被恢复到事务
开始前的状态,就像这个事务从来没有执行过一样。

 1.2.2 一致性(C)

在事务开始和完成时,数据必须保持一致。这意味着所有相关的数据规则都必须应用于事务的修改,以保持数据的完整性

 1.2.3 隔离性(I)

并发访问数据库时,事务与事务之间不会被互相干扰。但是访问相同数据时会存在并发干扰的情况,需要设置事务的隔离
级别来保证数据的准确性

 1.2.4 持久性 (D)

事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失

 1.3 事务的隔离机制

 1.3.1 并发带来的问题

 1.3.1.1 更新丢失 (两个都改)

例:A、B两个事务同时对同一条数据的某个字段进行++操作。B的读在A的写之前就会出现对字段少加一次的情况

 1.3.1.2 脏读 (一个修改一个读)

例:A写、B读,同一条数据的某个字段。在A写操作提交之前B读到的就是脏数据

 1.3.1.3 不可重复读(一个读两回前后不一) 

例:一个事务内部读了两回发现前后不一致

同一个查询条件,同一个row两次返回结果不一样,另一个事务针对这个row执行了update操作

 1.3.1.4 幻读

同一个查询条件,返回的结果不一样。另一个事务针对这个表做了delete或者insert操作

 1.3.2 事务的隔离级别 

查看事务隔离级别 select @@tx_isolation;

 1.3.2.1 读未提交

 1.3.2.2 读已提交 防脏读

 1.3.2.3 可重复读 防脏读、不可重复度

 1.3.2.4 串行化 防脏读、不可重复度、幻读

 1.4 事务实现原理

事务的实现是基于数据库的存储引擎,InnoDB引擎默认隔离级别是可重复读
MVCC解决不可重复读问题,间隙锁解决幻读问题

事务隔离性是通过锁来实现

事务的原子性,一致性和持久性都是事务日志来实现的

redo log其实保障的是事务的持久性和一致性
undo log则保障了事务的原子性
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值