MySQL之事务

本文详细介绍了MySQL事务的四大特性:原子性、一致性、隔离性和持久性,并探讨了事务的不同类型,包括扁平事务、带有保存点的编排事务、链事务和嵌套事务。同时,解释了事务的实现方式,如redo和undo日志,以及事务控制语句。此外,还讨论了事务的隔离级别、分布式事务中的XA事务以及避免不良事务习惯的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 事务

1.1 概述

       事务可由一条非常简单的SQL语句组成,也可以由一组复杂的SQL组成。

       事务是访问并更新数据库中各种数据项的一个程序执行单元

       事务中的操作,要么全部成功,要么全都不成功。

       事务必须同时满足四个特性:原子性、一致性、隔离性、持久性。

1.1.1 A(Atomicity)原子性

       原子性指整个数据库事务是不可分割的工作单位。只有使事务中所有的数据库操作都执行成功,才算整个事务成功。事务中任何一个SQL语句执行失败,已经执行成功的SQL必须撤销,数据库状态应该退回到事务前的状态。

       以银行取钱为例:

1)登录 ATM 机平台,输入密码
2)从银行的数据库中,取得账户的信息
3)用户在ATM机上输入要提取的金额
4)更新银行数据库中的账户信息
5)ATM 出款
6)用户取钱

       整个取款过程应该被视为原子操作,即要么全做,要么全不做。不能用户钱未从 ATM 机取得,银行卡上的钱已经被扣除。

1.1.2 C(Consistency)一致性

       一致性指事务将数据库从一种状态转变为下一种一致的状态。在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏

       例如表中一个字段具有唯一约束,如果一个事务对该字段进行修改,但是在事务提交或事务操作发生回滚后,该字段的数据不唯一了,这就破坏了事务的一致性要求,即事务将数据库从一种状态变为了一种不一致的状态。

       事务是一致性的状态,如果事务中某个动作失败了,系统可以自动撤销事务 — 返回初始化的状态。

1.1.3 I(Isolation)隔离性

       事务隔离性要求每个读写事务的对象对其他事务的操作对象能相互分离,即该事务提交前对其他事务都不可见,通常使用锁来实现。

1.1.4 D(Durability)持久性

       事务一旦提交,其结果就是永久性的。即使发生宕机等故障也能恢复。

1.2 分类

1.2.1 扁平事务

       在扁平事

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值