プログラミング・IT関連。知っていると便利なこと、気になって調査したこと、はまったけど解決できたことなど。 SQLiteは共有ロック・排他ロックの仕組みを備えており、プロセス内の複数スレッド、だけでなく、プロセスをまたぐ状態でSQLが同時に発行されても適切に処理されます。 トランザクションに複数のモードが存在し、指定するモードに依って取得されるロックが変わります。さらにSQLの内容に依存してロック状態が遷移するため、複数プロセスがアクセスしたときの挙動を正確に把握できるよう、仕様を整理してみました。 (文中の「プロセス」は、正確には「プロセス、もしくはスレッド」を意味します。) DBのロック状態の種類: UNLOCKED ロックされていない状態。誰も読み書きしていない。DBの初期状態。 SHARED read可、write不可な状態。複数プロセスが同時にSHAREDロックを取得可能。複数プ
![[sqlite] SQLiteのロック・トランザクション関連仕様の整理](https://cdn-ak-scissors.b.st-hatena.com/image/square/7cf889c231d1ab5403de6ee4f638d2c47fd089f0/height=288;version=1;width=512/https%3A%2F%2Fblogger.googleusercontent.com%2Fimg%2Fb%2FR29vZ2xl%2FAVvXsEiiOrIUImJRms3CnN9bJ5VhHMbvyvz8bdliIjcEzgkNX05YLvwqGUr_hoEC6toySZChV02qaXMBRsMf9y-vnt6gFKFrl0iqr7R12b5I3uZpPzA1nrEWXzteaFBZzEMxmFY8-94MYpCbGx7Q%2Fw1200-h630-p-k-no-nu%2FInside_SQLite.png)