SQLite の IMMEDIATE EXCLUSIVE DEFERRED トランザクションの違い ― 2021年06月15日 11時41分23秒
IMMEDIATE と EXCLUSIVE は BEGIN IMMEDIATE、BEGIN EXCLUSIVE と打った時にトランザクションが始まる。コマンドが終了した時点で、既にデータベースの排他処理は始まっている。IMMEDIATE と EXCLUSIVE の違いは、トランザクション中に、他のセッションに読み取りを許可するかどうか。EXCLUSIVE は他のセッションの読み取りを許可しない。
DEFERRED の説明に移る前に、SQLite のロックの種類に付いて触れる必要がある。ロックには読み出しロックと、書き込みロックの二種類があり、読み出しロックは複数のセッションが同時に開始できるが、書き込みロックを開始できるのは一セッションのみになる。
なお、IMMEDIATE も EXCLUSIVE も書き込みロックを取得する。EXCLUSIVE はそれに加えて、他のセッションからの読み出しも禁止する。
次回。
コメント
トラックバック
このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2021/06/15/9388132/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。