>>209

つづき

■楽観的制御と高い分離レベルを両立

SILOの特徴は「SERIALIZABLE」の分離レベルを保証しながら、処理性能も高い点だ。現在の主要RDB製品もSERIALIZABLEを使用できるが、処理性能が大きく落ちてしまうため、デフォルト設定においてトランザクション分離レベルは2段階低い「READ COMMITTED(リード・コミッテッド=コミットされた読み取り)」になっている。SILOのような高い分離レベルと高い処理性能の両立は画期的だった。

SILOはロックを基本的に用いない「楽観的並行実行制御(OCC)」と、複数のトランザクションをまとめてログに記録する「グループコミット」を採用している。基本はロックフリーでトランザクションを並列処理して性能を高めつつ、わずかな時間だけロックを使うことでデータの一貫性を確保するテクニックを用いている。

具体的には、SILOはトランザクション処理を「Read(読み取り)」「Validation(検証)」「Write(書き込み)」の3段階で実行し、Validationの際に当該トランザクションがアクセスするデータアイテムに対してだけロックをかけ、Writeが終わったらロックを解除する。Validationとは他のトランザクションとの競合がなかったか検証するフェーズだ。
Validationによってトランザクション処理の一貫性を保証する。現在の主要RDB製品が採用する悲観的並列実行制御はデータアクセス前からデータアクセス終了までロックする。それに比べてSILOはロック時間が短い。

SILOはグループコミットを採用し、多数のトランザクションのログレコードをストレージに対して並列的に書き込む。近年の不揮発性メモリーが備える高速な書き込み性能を十分に活用できる。

13年に米マサチューセッツ工科大学(MIT)の研究チームがSILOを提案して以降、SERIALIZABLEを保証する高速なトランザクション処理方式が次々と考案されている。

つづく