事务的四大特性和隔离级别

更新日期: 2019-07-22阅读: 2.5k标签: 事务

一.什么是事务

定义:数据库执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。
本质:由一个或多个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://fly63.com/article/detial/4319

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!