背景 先日、CSR (Conflict Serializability)について説明しました。 今回は、CSRを満たすスケジューリングを動的に生成する方法について、整理してみます。 なお、ここで書くその方法とは、2PL (Two Phase Lock)なのですが、一応念のため書いておくと、2PC (Two Phase Commit)と混同しないでください。 2PCは、複数のDBでトランザクションを管理する分散トランザクションを実現する方法の一つです。 分散トランザクションは、また別の機会に書きたいと思います。 PaxosやRaft、Spannerなど。 成長層と縮退層 2PLは、トランザクションが開始しデータにアクセスすると、そのデータにロックをかけていきます。 そして、トランザクションの終了時に、全てのロックを解除します。 ロックをかけていくフェーズを成長層 (Growing Phase