摘要:二数据库中事务的有四大特性原子性,或称不可分割性将事务中进行的操作捆绑成一个不可分割的单元。隔离性,又称独立性一个事务的执行,不被其他事务干扰。三事务的隔离级别。可串行化提供严格的隔离级别,要求事务一个个的执行。
一.什么是事务
定义:数据库执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。
本质:由一个或多个sql语句组成。这些sql语句在执行过程中被当作一个整体,要么全部的sql语句执行成功,要么全部失败。不存在一部分执行成功,一部分执行失败。
二.数据库中事务的有四大特性(ACID)
(1)原子性(Atomic,或称不可分割性)
将事务中进行的操作捆绑成一个不可分割的单元。事务中进行的数据操作,要么全部失败,要么全部成功。
(2)一致性(Consistency)、
事务完成时,所有数据保持一致状态。
(3)隔离性(Isolation,又称独立性)
一个事务的执行,不被其他事务干扰。即一个事务内部的操作和并发的其他事务是互相隔离的。
(4)持久性(Durability)
一个事务完成后,对数据库的修改时永久的。其他操作和故障都不会对其有任何影响
在实际应用中,多个用户同时操作相同的数据时,可能会产生并发问题。
1)脏读 :一个事务读取了另一个事务未提交的数据。
2)不可重复读:一个事务对同一行数据读取两次,但得到的数据不同。
3)幻读/虚读:一个事务执行两次查询,但是第二次查询中包含了第一次查询时未出现的数据。
三.事务的隔离级别。
1)Read Uncommitted (读未提交)
如果一个事务A已经开始写数据,则另一个事务B不允许写操作。但是可以读取这个事务A修改但未提交的数据,会造成脏读。
2) Read Committed (读已提交)
事务A只能读取事务B修改并且提交后的数据行,禁止访问事务B处于写状态的数据行。可以避免脏读。
3)Repeatable Read(可重复读取)
事务A在读取数据行时,禁止其他事务对该数据行进行更改,但是可以进行读取操作。进行写操作时,禁止其他事务的任何操作。可以防止脏读和不可重复读。
4) Serializable (可串行化)
提供严格的隔离级别,要求事务一个个的执行。不能并发执行。有效的防止脏读,不可重复读,幻读。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/35378.html
摘要:二数据库中事务的有四大特性原子性,或称不可分割性将事务中进行的操作捆绑成一个不可分割的单元。隔离性,又称独立性一个事务的执行,不被其他事务干扰。三事务的隔离级别。可串行化提供严格的隔离级别,要求事务一个个的执行。 一.什么是事务定义:数据库执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。本质:由一个或多个sql语句组成。这些sql语句在执行过程中被当作一个整体,要么全部的sq...
摘要:当事务已经被提交之后,就无法再次回滚了,唯一能够撤回已经提交的事务的方式就是创建一个相反的事务对原操作进行补偿,这也是事务持久性的体现之一。 在关系型数据库中,事务的重要性不言而喻,只要对数据库稍有了解的人都知道事务具有 ACID 四个基本属性,而我们不知道的可能就是数据库是如何实现这四个属性的;在这篇文章中,我们将对事务的实现进行分析,尝试理解数据库是如何实现事务的,当然我们也会在文...
摘要:当数据库上有多个事务同时执行的时候,就可能出现脏读不可重复读幻读的问题,为了解决这些问题,就有了隔离级别的概念。若隔离级别是读提交,则是,的值是。我们可以看到在不同的隔离级别下,数据库行为是有所不同的。 事务 就是要保证一组数据库操作,要么全部成功,要么全部失败。 在MySQL中,事务支持是在引擎层实现的 MySQL是一个支持多引擎的系统,但并不是所有的引擎都支持事务。比如MySQL原...
阅读 3034·2021-11-23 09:51
阅读 655·2021-09-03 10:30
阅读 3049·2021-08-31 09:40
阅读 3138·2019-08-30 14:22
阅读 760·2019-08-30 14:09
阅读 2782·2019-08-30 13:21
阅读 3064·2019-08-28 18:03
阅读 2740·2019-08-26 13:44