6

複数のPerlプロセスが同じSQLite3データベースの書き込みと読み取りを同時に行うという不幸な状況があります。

これにより、2つのプロセスが同時に書き込みを行うか、一方のプロセスがデータベースから読み取りを行い、もう一方のプロセスが同じレコードを更新しようとするため、Perlプロセスがクラッシュすることがよくあります。

同じsqliteデータベースで動作するように複数のプロセスを調整する方法を知っている人はいますか?

このシステムを別のデータベースエンジンに移動する作業をしますが、その前に、そのまま動作するように修正する必要があります。

4

1 に答える 1

7

SQLiteは、複数のプロセスから使用するように設計されています。ネットワークドライブでsqliteファイルをホストする場合はいくつかの例外があり、1つのプロセスから使用されることを期待するようにコンパイルする方法があるかもしれませんが、私は定期的に複数のプロセスから使用しています。問題が発生している場合は、タイムアウト値を増やしてみてください。SQLiteはファイルシステムロックを使用して、データを同時アクセスから保護します。1つのプロセスがファイルに書き込んでいる場合、2番目のプロセスは待機しなければならない場合があります。タイムアウトを3秒に設定しましたが、問題はほとんどありません。

タイムアウト値を設定するためのリンクは次のとおりです

于 2012-06-20T19:38:44.473 に答える