4

複数のスレッドで Haskell の HDBC を使用して SQLite データベースからクエリ (読み取り) を行う場合、単一の接続を使用できますか?それとも各スレッドに独自の接続を使用する必要がありますか? ありがとう。

4

1 に答える 1

1

hdbc-sqlite コードを検索したところ、次のコメントが見つかりました。

変更の数を処理するためのロジック: クエリの前後の合計変更を確認します。それらが異なる場合は、ローカルの変更を確認してください。(ドキュメントによると、実際に変更を行うクエリを実行しない限り、ローカル変更カウンターは更新されないようです。)

とにかく、SQLiteは特定のdbhを複数のスレッドで使用することをサポートしていないため、これはスレッドに関しては問題ありません。

公式の Sqlite ドキュメントには、このトピックに関するページ全体があります

FAQには次のように書かれています。

(5) 複数のアプリケーションまたは同じアプリケーションの複数のインスタンスが、1 つのデータベース ファイルに同時にアクセスできますか?

複数のプロセスが同時に同じデータベースを開くことができます。複数のプロセスが同時に SELECT を実行できます。ただし、いつでもデータベースに変更を加えることができるプロセスは 1 つだけです。

この情報は、両方のアプローチを除外します。おそらく、この情報が間違っていることを示すために、いくつかのテストを作成できます。

于 2013-06-03T20:12:08.503 に答える