【PostgreSQL】关于事务

首先

如果要使用数据库,了解事务是必不可少的。本次我们将总结事务的相关内容。

「交易」是指一种行为

    • トランザクションは、データベース操作の処理単位。

 

    • 複数の操作を一つのグループとして扱い、全てが成功するか、全てが失敗するかの「全て成功、または無し」の性質を持つ。

 

    データの整合性と安全性を保つ。

交易的特点

    1. ACID特性

原子性,即事务内的所有操作要么全部执行,要么全部不执行。
一致性,即事务在保持数据库一致性的状态下完成。
隔离性,即同时执行的多个事务不会相互干扰。
持久性,即事务完成后,其结果以能够抵御系统故障的形式持久化。

事务控制

通过BEGIN开始事务,通过COMMIT确认事务,通过ROLLBACK撤销事务。
可以通过设置隔离级别来控制事务之间的可见性和影响。

为了维护数据的一致性,使用锁来控制对数据的并发访问。
根据锁的类型和级别,会有不同的行为。

关于事务隔离级别

决定交易在多大程度上与其他交易“隔离”的重要设置。
如果交易的隔离级别较低,则可能产生脏读、不可重复读和幻读等影响。
在PostgreSQL中,可以指定以下隔离级别。

    1. 读未提交

 

    1. 在这个级别下,可以查看其他事务尚未提交的更改(脏读取)。

 

    1. 然而,在PostgreSQL中,实际上该级别与“读已提交”相同。

读已提交(默认)
事务只能看到在自己开始时已经提交的数据。
当其他事务的更改被提交后,这些更改将变得可见。
这可能导致非重复读取(相同查询返回不同结果)的可能性。

可重复读取
事务可以看到自己开始时的数据快照。
这样,相同的查询在事务中总是返回相同的结果(防止非重复读取)。
但是,可能会发生幻像读取(其他事务新增或删除的行可见)。

串行化
最严格的隔离级别,事务完全隔离于其他事务。
不受其他事务的影响,一系列针对数据库的事务会像顺序执行一样。
也防止了幻像读取,但在该级别下可能导致性能下降和锁竞争增加的可能性。

总结

    • トランザクションは、データベースの信頼性と整合性を保つために必要。

 

    PostgreSQLでは、これらの概念がしっかりと実装されており、安全かつ効率的なデータ操作を可能。
广告
将在 10 秒后关闭
bannerAds