1、数据库事务:主要用于处理操作量大、复杂度高的数据。事务处理可以用来维护数据库的完整性,保证成批的SQL语句要么全部执行,要么全部不执行。
2、四大特性(ACID):原子性、一致性、隔离性、持久性
①原子性:一个事务中的所有操作,要么全部完成,要么全部不完成,不会结束在中间的某个环节。事务在执行过程中发生错误,会被回滚到事务开始的状态,就像这个事务没有执行过一样。
②一致性:在事务开始之前和结束之后,数据库的完整性没有被破坏。
③隔离性:数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。
④持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。
3、事务的隔离级别分为四种:
Read uncommitted (读未提交) Read committed (读已提交)
Repeatable read (可重复读) Serializable(串行化)
读未提交级别最低,串行化级别最高,级别越高,执行效率越低。
4、在并发事务中,没有进行隔离的情况下,会发生的问题:
①脏读:指一个事务读取了另一个事务未提交的数据。
②不可重复读:指在一个事务内读取表中的某一行数据,多次读取结果不同。
③幻读:当用户读取某一范围的数据行时,另一个事务又在该范围内插入了新行,当用户再读取该范围的数据行时,会发现新的“幻影”行。
事务隔离级别相对应的问题如表格所示:
事务隔离级别 | 脏读 | 不可重复读 | 幻读 |
Read uncommitted (读未提交) | 是 | 是 | 是 |
Read committed (读已提交) | 否 | 是 | 是 |
Repeatable read (可重复读) | 否 | 否 | 是 |
Serializable(串行化) | 否 | 否 | 否 |