萌えハッカーニュースリーダー

2025/04/29 14:30 Amazon RDS for PostgreSQL 17.4

hakase
博士

ロボ子、今日のITニュースはPostgreSQLのトランザクション分離レベルについてじゃ。

roboko
ロボ子

トランザクション分離レベルですか。データベースの整合性を保つための重要な概念ですね。

hakase
博士

そうじゃ。PostgreSQLの"Read Committed"はRead Committedの一種で、"Repeatable Read"は実際にはSnapshot Isolationを提供しておる。

roboko
ロボ子

Snapshot Isolationですか。Serializableより弱い分離レベルですね。

hakase
博士

その通り。そして、"Serializable"はSerializabilityを提供するのじゃ。

roboko
ロボ子

Amazon RDS for PostgreSQLでは、これらの分離レベルはどのように扱われているのでしょうか?

hakase
博士

ふむ、そこが面白いところじゃ。AWSのマネージドPostgreSQLクラスタサービスであるAmazon RDS for PostgreSQLは、プロビジョニング、ストレージ管理、レプリケーション、バックアップ、アップグレードを自動化してくれる。

roboko
ロボ子

便利ですね。複数のアベイラビリティーゾーンにデータベースノードを分散させることで、可用性も高めているのですね。

hakase
博士

そうじゃ。同期レプリケーションを使用し、プライマリと少なくとも1つのセカンダリインスタンスでトランザクションが永続化されることを保証しておる。

roboko
ロボ子

プライマリエンドポイントはすべてのPostgreSQL分離レベルをサポートするとのことですが、セカンダリはどうなのでしょう?

hakase
博士

セカンダリはSerializableをサポートしていないため、すべてのノードでサポートされる最強のレベルはSnapshot Isolationとなるのじゃ。

roboko
ロボ子

なるほど。Jepsenのテストライブラリを調整して、Amazon RDS for PostgreSQLでテストを行った結果はどうだったのでしょう?

hakase
博士

Amazon RDS for PostgreSQL 17.4は、健全な状態で適度な並行性で、数分ごとにG-nonadjacentサイクルを示すことがわかったのじゃ。

roboko
ロボ子

G-nonadjacentサイクルですか?それはSnapshot Isolationの違反を意味しますね。

hakase
博士

その通り。Long Forkの例も確認されたようじゃ。Write Skewは確認されなかったみたいじゃが。

roboko
ロボ子

Parallel Snapshot Isolationを提供している可能性があるとのことですが、シングルノードのPostgreSQLシステムよりも安全性が低いというのは意外です。

hakase
博士

そうじゃな。読み取りトランザクションは、トランザクションの実行順序に関して他のトランザクションと意見が異なる場合があるからの。

roboko
ロボ子

これらの異常は読み取り専用セカンダリに対するクエリに関連している可能性があるとのことなので、ライターエンドポイントのみを使用するか、すべての安全上重要なトランザクションに少なくとも1つの書き込みを含めることで、Snapshot Isolationを回復できる可能性があるのですね。

hakase
博士

そういうことじゃ。Amazon RDS for PostgreSQLマルチAZクラスタを使うときは、この辺りを考慮する必要があるのじゃな。

roboko
ロボ子

勉強になりました!

hakase
博士

ところでロボ子、データベースの分離レベルって、まるで人間関係みたいじゃな。完全に分離すると寂しいし、緩すぎると問題が起きるし…。

roboko
ロボ子

博士、それは少し強引な例えですね…。

hakase
博士

まあ、たまにはこういうオチも良いじゃろ?

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search