ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

事务的概念和ACID特性

2021-03-09 19:01:58  阅读:171  来源: 互联网

标签:事务 log 数据库 回滚 特性 一致性 ACID


事务的概念和ACID特性

什么是事务?

transaction(事务)表示一个不可再分的业务。批量的 DML 语句同时成功或者同时失败.原子性不可再分最基本单元,可以看做一个完整的事件,通常一个事务可以对应一个完整的业务流程

事务中存在的概念:(开启,回滚,提交)事务

关于事务的回滚需要注意:只能回滚 insert、delete 和 update 语句,不能回滚 select(回滚 select 没有任何意义),对于 create、drop、alter 这些无法回滚.

事务只对 DML(数据库操作语言) 【select,insert,update,delete】有效果? 数据库中的事务只有发生了改变才有,为了保持数据一致性。

ACID 特性

原子性(atomictity)

整个事务中的所有操作,必须作为一个单元全部完成(或全部取消)。

undo log (逻辑日志,根据每行记录进行记录)名为回滚日志,是实现原子性的关键.

undo log 记录了回滚需要的信息,当事务执行失败或调用rollback,导致事务需要回滚,便可以利用 undo log 中的信息将数据回滚到修改之前的样子。

一致性(consistency)

在事务开始之前与结束之后,数据库都保持一致状态。从数据库层面,数据库通过原子性、隔离性、持久性来保证一致性。也就是说 ACID 四大特性之中,C(一致性)是目的,A(原子性)、I(隔离性)、D(持久性)是手段,是为了保证一致性,数据库提供的手段.由AID保证C。

但是如果事务中故意写出违反约束的代码,一致性还是无法保证,还必须从应用层角度考虑。从应用层面,通过代码判断数据库数据是否有效,然后决定回滚还是提交数据!

隔离性(lsolation)

一个事务不会影响其他事务的运行。事务的隔离性是利用的是锁和 MVCC 机制。

持久性(Durability)

在事务完成以后,该事务对数据库所作的更改将持久地保存在数据库之中,并不会被回滚。事务的持久性是利用 Innodb 的 redo log。

redo log通常是物理日志,记录的是数据页的物理修改,而不是某一行或某几行修改成怎样怎样,它用来恢复提交后的物理数据页(恢复数据页,且只能恢复到最后一次提交的位置)。

标签:事务,log,数据库,回滚,特性,一致性,ACID
来源: https://www.cnblogs.com/CoderFBI/p/14507442.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有