WALモードのデータベースへの書き込みによって読み取りがブロックされているのを見ています-その理由がわかりません。
私のセットアップ:
- SQLite3 データベース、journal_mode=WAL、同期=NORMAL
- 複数の C++ プロセス (正確には 3 つ) がデータベースを使用します。これらのプロセス内のメソッドは、 との独自の非共有接続を開閉し
sqlite3_open_v2
ます。 - データを挿入するメソッドは、データベースを
SQLITE_OPEN_READWRITE
モードで開きます - データベースから読み取るメソッド (つまり、select ステートメントのみを実行する) は、データベースを
SQLITE_OPEN_READONLY
モードで開きます。
WALモードでは、書き込みが発生している間に同時読み取りが可能になるはずです。
それでも、selectステートメントを使用して準備しているときに「データベースがロックされています」と表示されますsqlite3_prepare_v2
リーダーがブロックされる原因は何ですか? 「読み取り」が実際に何であるかを誤解していますか?
ヒントをいただければ幸いです。
ありがとう :)