1

C++ プロジェクトのメモリ データベースで SQLite を使用しています。私のプロジェクトでは、複数のスレッドが SQLite インメモリ データベースを同時に読み書きします。ただし、さまざまなスレッドがさまざまなテーブルの読み取りと更新を行っていますが、それでも SQLite データベース テーブルのロック エラーが発生します。私が間違っていなければ、1 人のライターがテーブルを書き込んでいるときに、SQLite が関連するテーブルではなくデータベース ファイル全体をロックすることを知っています。よくわかりませんが、メモリ内データベースでも同じだと思います。したがって、実際には、これを回避するために複数のメモリ内データベースを作成したいと考えています。だから私の質問はそれが可能であり、可能であればどのようにですか? 前もって感謝します。

4

1 に答える 1

0

全体論的な観点から、SQLiteがテーブルまたは行レベルのロックをサポートしていない場合でも(これは必ず実行する必要があります)、これを回避するためだけに複数のデータベースを実装するのは間違った方法のように思えます。単一の技術的な問題を回避するためだけに、アプリケーションが不必要に複雑になることになります。

たとえば、複数のデータベース間でテーブルをどのように結合しますか?トランザクションをどのように同期しますか?それを行う必要がない場合は、RDBMSの機能が実際に必要かどうかを自問してください。Boost/ STLに基づく一連のオブジェクト/コレクションも同様に機能せず、おそらくより高速でしょうか。

それがどのようにできるかについて。最高の情報のいくつかは実際にはStackOverflowにあります。たとえば、この答えを見てください。

于 2012-07-14T11:19:36.820 に答える