事务处理
作用
本质
保证数据库操作要么全部成功,要么全部失败的机制
ACID特性
特性 | 说明 |
---|---|
原子性(Atomicity) | 事务是不可分割的工作单位 |
一致性(Consistency) | 事务执行前后数据库状态一致 |
隔离性(Isolation) | 并发事务互不干扰 |
持久性(Durability) | 事务提交后改变永久有效 |
示例
-- 银行转账事务示例
BEGIN TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
-- 检查余额是否充足
IF (SELECT balance FROM accounts WHERE id = 1) < 0 THEN
ROLLBACK;
ELSE
COMMIT;
END IF
注意事项
- 事务隔离级别选择:
- READ UNCOMMITTED: 可能脏读
- READ COMMITTED: 避免脏读
- REPEATABLE READ: 避免不可重复读
- SERIALIZABLE: 最高隔离级别
- 长时间运行的事务会降低并发性能
- 死锁是多个事务互相等待导致的