梗概
- 事务是一组操作单元,被视为一个不可分割的工作单位,要么全部成功执行,要么全部失败回滚。
事务的特性
child::
事务的ACID特性
father::事务
四个关键特性
指向原始笔记的链接
原子性(Atomicity):事务是一个不可分割的工作单位,要么全部成功提交,要么全部失败回滚。即使发生了意外故障,也要保证数据的一致性。
一致性(Consistency):事务执行前后,数据库从一个一致状态转换到另一个一致状态。在事务开始前和结束后,数据库约束和规则必须保持完整性。
不一致状态如:数据库发生故障,事务中有些操作做完了,但有些操作没有执行,这是数据库就处于不一致的状态
实现方式:[use::故障恢复]
隔离性(Isolation):多个事务同时进行时,每个事务的操作应该相互隔离,避免彼此干扰。事务之间应该具有隔离性,以防止并发执行时引起数据不一致问题。
持久性(Durability):一旦事务提交成功,在任何系统故障情况下,已经提交的数据都不会丢失。系统需要能够将已提交的数据持久保存在数据库中。
事务的实现方式
-
使用数据库管理系统提供的事务支持:大多数数据库管理系统都提供了对事务的支持,可以通过SQL语句来控制事务的开始、提交和回滚等操作。
-
use::并发控制
-
编程语言中实现事务:在程序中通过编写代码来实现对数据库的操作,并使用编程语言提供的事务控制语句来确保数据操作的原子性。
事务相关的事件
-
开始(BEGIN):标记一个新的事务开始。
-
提交(COMMIT):将已经执行成功的操作永久保存到数据库中。
-
回滚(ROLLBACK):撤销未提交的操作或者取消已经提交但是出现错误需要撤销的操作。
事务并发问题
child::
事务的并发问题
主要问题
指向原始笔记的链接
- 常见的并发问题包括[child::丢失修改]、[child::脏读]、[child::不可重复读]、[child::幻读]
- 解决并发问题:[use::并发控制]
- 数据库系统如何处理并发问题,保证数据的一致性和完整性
示例
SQL server中的事务代码
BEGIN TRANSACTION;
UPDATE table_name
SET column1 = value1
WHERE condition;
IF @@error <> 0
ROLLBACK;
ELSE
COMMIT;
END IF;