《PostgreSQL 开发指南》第 23 篇 事务与并发控制
2020-05-10 04:12
991 查看
文章目录
本篇介绍 PostgreSQL 中的数据库事务概念和 ACID 属性,并发事务可能带来的问题以及 4 种隔离级别,演示了如何使用事务控制语句(TCL)对事务进行处理,包括
BEGIN、
COMMIT、
ROLLBACK以及
SAVEPOINT语句。
数据库事务
数据库事务是由一个或者多个操作组成的工作单元。一个经典事务示例就是银行账户之间的转账,它由发起方的扣款操作和接收方入账操作组成,两者必须都成功或者都失败。
数据库中的事务具有原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)以及持久性(Durability),也就是 ACID 属性:
- 原子性保证事务中的操作要么全部成功,要么全部失败,不会只成功一部分。比如从 A 账户转出 1000 元到 B 账户,如果从 A 账户减去 1000 元成功执行,但是没有往 B 账户增加 1000 元,意味着客户将会损失 1000 元。用数据库中的术语来说,这种情况导致了数据库的不一致性。
- 一致性确保了数据修改的有效性,并且遵循一定的业务规则;例如,上面的银行转账事务中如果一个账户扣款成功,但是另一个账户加钱失败,那么就会出现数据不一致(此时需要回滚已经执行的扣款操作)。另外,数据库还必须保证满足完整性约束,比如账户扣款之后不能出现余额为负数(可以在余额字段上添加检查约束)。
- 隔离性决定了并发事务之间的可见性和相互影响程度。例如,账户
相关文章推荐
- 深入理解 MySQL ——锁、事务与并发控制
- 深入理解 MySQL ——锁、事务与并发控制
- 事务处理和并发控制
- 数据库事务处理中关于并发控制的三大问题——丢失更新,未提交依赖和不一致分析问题
- 记一次数据库事务的并发同步控制
- 03jdbc之事务回滚点、并发控制、JDBC异常处理
- LINQ to SQL语句(13)之开放式并发控制和事务
- 数据库 事务并发控制
- 事务并发控制和锁机制
- MySQL优化系列(八)--锁机制超详细解析(锁分类、事务并发、引擎并发控制)
- EntityFramework与TransactionScope事务和并发控制
- JDBC Oracle事务隔离(并发控制)
- 对事务与并发控制的认识
- Oracle并发控制与事务隔离
- informix的事务、并发控制、锁机制、隔离级别
- 《高性能MySQL》读书笔记之 MySQL锁、事务、多版本并发控制的基础知识
- 【转】informix的事务、并发控制、锁机制、隔离级别
- LINQ体验(10)——LINQ to SQL语句之开放式并发控制和事务
- MySQL之并发控制、锁、事务
- MySQL中的事务及读写锁实现并发访问控制