事务及ACID四大特性

点点圈 提交于 2020-01-10 11:28:56

事务及ACID四大特性

1. 事务

事务(Transaction)是并发控制单位,是用户定义的一个操作序列,这些操作要么都做,要么都不做,是一个不可分割的工作单位。

在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。

事务通常以BEGIN TRANSACTION开始,以COMMIT或ROLLBACK结束。

1.1 概念

在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序。

1.2 特性

事务是恢复和并发控制的基本单位。

事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。

2. ACID特性

2.1 原子性(atomicity)

一个事务是一个不可分割的工作单位,事务中包括的操作要么都做,要么都不做。

2.2 一致性(consistency)

事务必须是使数据库从一个一致性状态变到另一个一致性状态。

比如,当数据库只包含成功事务提交的结果时,就说数据库处于一致性状态。如果数据库系统在运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就处于一种不正确的状态,或者说是不一致的状态。

如果事务没有原子性的保证,那么在发生系统 故障的情况下,数据库就有可能处于不一致状态。 因而,事务的原子性与一致性是密切相关的。

2.3 隔离性(isolation)

一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。

2.4 持久性(durability)

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

3. 参考面试题

问1 :mysql 事务主要用来做什么?

处理操作量大,复杂度高的数据.学员管理,删除一个学员.

要删除基本资料,学员相关信息,成绩,考核,会议等等. 这些数据库操作语句就构成一个事务.

问2 : mysql事务使用要注意哪些?

  1. 必须是 InnoDB 表引擎

  2. 事务处理,可以用来维护数据库的完整性,保证成批(整体)的sql语句 要么全部执行,要么全部不执行.

  3. 事务主要用来管理 update delete insert

问3 : mysql事务需要满足哪些条件才会(全部)执行呢?

一般来说,事务必须满足4个条件. ACID. 原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)

问4 : mysql事务两个关键字?

commit / rollback

提交: 当一个事务完成之后,发出commit命令,来让所有参与表的更改生效.

回滚: 当事务 发生故障,应该发出 rollback命令 来让事务引用的每一个表都回到事务开始以前的状态.

参考

https://baike.baidu.com/item/事务/5945882?fr=aladdin
https://www.cnblogs.com/JiangDakang/p/9376510.html

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!