mysql数据库开发实现原理_MySql数据库InnoDB引擎ACID的实现原理

数据库事务有ACID四大特性,这四大特性共同保证了数据库中数据的安全。

那么数据库是如何实现这四大特性的呢?

本文以MySQL的InnoDB引擎为例,详细分析ACID四大事务特性的实现原理;

首先,原子性(Atomicity),原子性的特点是一个事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,不可能只执行其中的一部分操作;

可以看出,原子性主要体现在两方面:

一,当事务成功提交时,数据变更;

二,当事务失败回滚时,数据恢复到事务操作之前的状态;

InnoDB在保证数据库事务原子性的时候,采用了记录回滚日志(undo Log)的方式,操作一条数据时,在事务提交时异步插入一条与当前执行操作相反的记录,具体而言:

(1)当执行insert语句时,插入一条delete语句;

(2)当执行update语句时,插入一条相反的update语句;

(3)当执行delete语句时,插入一条insert语句;

如此,当事务提交成功时,则数据正常保存,有事务回滚时,自动执行对应的undo log 就可以保证数据的原子性了;

举例说明,数据表tbl_leiting中有一条数据:

5fe8f33c4d3121d6411a6ea09444da3a.png

执行一条 sql: update tbl set name="zhangsan" where id=1;数据变成了如下图所示;

812209e90bc55dd580e33700d701b02d.png

而在undo log中,会存有一条 update语句  update tbl set name="leiting01" where id=1;

当事务回滚时,会执行这条语句,保证事务的原子性;

未完待续;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值