事务
并发控制的单位,时用户定义的一个操作序列。这些操作序列要么全部执行,要么全部不执行,是个不可分割的工作单位。
如果事务操作成功,则该事务进行的所有数据均会提交,更改成为数据库中的永久组成部分;如果事务操作失败,则所有操作均取消,所有数据的更改均清除
特性
原子性:事务是数据库的逻辑工作单元
一致性:事务执行结果必须是使数据库从一个一致性状态变到另一个一致性状态
隔离性:一个事务的执行不能被其他事务干扰
持续性:一个事务一但提交,它对数据库中数据的改变就应该是永久性的
事务的语句
开始事物:BEGIN TRANSACTION
提交事物:COMMIT TRANSACTION
回滚事务:ROLLBACK TRANSACTION
隔离级别
四个级别(低到高):Read uncommitted、Read committed、Repeatable read、Serializable。性能由高到低。
Read uncommitted:未提交读。事务A读取数据时,其他事务可读取该数据,导致事务A提交数据后,其他事务读取的数据失效
Read committed:提交读。事务A提交数据时,其他事务在其之前也提交数据。导致事务A提交数据时,读取到的数据失效
Repeatable read:重复读。事务A读取数据后,其他事务不能读取该数据
Serializable:序列化
| 脏读 | 不可重复读 | 幻读 | |
|---|---|---|---|
| Read uncommitted | Y | Y | Y |
| Read committed | N | Y | Y |
| Repeatable read | N | N | Y |
| Serializable | N | N | N |
【注】Y:可能出现,N:不会出现

本文详细介绍了数据库事务的概念,包括其原子性、一致性、隔离性和持续性等特性,以及开始、提交和回滚事务的语句。同时,还探讨了不同隔离级别的特性,如Read uncommitted、Read committed、Repeatable read和Serializable,以及它们如何影响脏读、不可重复读和幻读等问题。

200

被折叠的 条评论
为什么被折叠?



