1. ホーム
  2. sqlite

[解決済み] SQLiteデータベースに対して、複数の接続から同時に読み書きすることはできますか?

2022-12-07 04:40:44

質問

2 つのプロセスで使用される SQLite データベースがあります。SQLite の最新バージョンで、一方のプロセス (接続) がデータベースに書き込むトランザクションを開始している間、もう一方のプロセスはデータベースから同時に読み込むことができるでしょうか。

どのように解決するのですか?

sqlite.orgを中心に様々なところから情報を集め、まとめました。

まず、デフォルトでは、複数のプロセスで同じSQLiteデータベースを同時に開くことができ、複数の読み込みアクセスを並行して満たすことができます。

書き込みの場合、1回の書き込みでデータベースが短時間ロックされ、読み込みも何も、データベースファイルには全くアクセスできなくなります。

バージョン 3.7.0 以降、新しい "ライトアヘッドロギング" (WAL) オプションが利用可能になり、読み込みと書き込みを同時に行うことができるようになりました。

デフォルトでは、WALは有効ではありません。 WALを有効にするには、SQLiteのドキュメントを参照してください。