事务的四大特性和隔离级别
一.什么是事务
定义:数据库执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。本质:由一个或多个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 (可串行化)
提供严格的隔离级别,要求事务一个个的执行。不能并发执行。有效的防止脏读,不可重复读,幻读。
本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!