文章详情

短信预约信息系统项目管理师 报名、考试、查分时间动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

MySql数据库InnoDB引擎ACID的实现原理

2015-09-05 13:23

关注

MySql数据库InnoDB引擎ACID的实现原理

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

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

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

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

(1)当事务成功提交时,数据变更;

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

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

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

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

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

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

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

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

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

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

当事务提交成功后,undo long会被删除;

二,持久性( Durability,持久性是指事务一旦提交,它对数据库的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。

MySQL是在内存中操作数据,然后写入磁盘,由于内存和磁盘的读写速度不一致,有可能出现内存中的数据还没完全写入磁盘,系统崩溃了,这样数据就会出现丢失。

持久性就是为了保证在系统崩溃的情况下,数据不会丢失。

InnoDB采用记录预写日志(redo log)日志的方式保证事务的持久性。

与undo log相反,redo log记录的是新数据的备份,在事务提交之前,通过异步的方式持久化。

未完待续;

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯