0

Web アプリケーションのデータ ストアとして SQLite を使用していますが、現在 mod_perl を使用して Web サイトを実装していて、データベースのロックの問題が発生しています。

予想どおり、Web サーバーの起動時に Web アプリケーション全体が Plack Apache ハンドラ (Plack::Handler::Apache2) によってロードされます。最初の db クエリはデータベース全体にロックを作成し、db を変更する必要がある後続のクエリは失敗します。

私の抜け道は何ですか?永続的な Web 環境で SQLite を使用できますか? 他のデータベースストアを探す必要がありますか?

私は MySQL のファンではなく、使用したくありません。PostGres を使用する可能性もありますが、Tokyo Cabinet などのキー/値データベースを使用するにはまったく新しい方法を学ぶ必要があるため、軽量でできれば SQL ベースのものを使用したいと考えています。私はむしろ本当にSQLiteを使いたいです。

4

2 に答える 2

0

データベースへのハンドルが開いている場合、この問題が発生する可能性があります。ログ処理中に結果セットを反復処理すると、ロックが固定されたままになるという問題が発生しました。

クエリのすべての行を取得して取得し、呼び出し$sth->finish()てロックを解除してください。もう少しメモリを使用しますが、ロックを回避します。

あなたがこれをやろうとしていることを知っているので、あなたは$sth->fetchall_arrayref()またはを利用することができます$sth->fetchall_hashref()

于 2010-10-30T01:53:21.353 に答える
0

東京内閣の表データベースを利用。

于 2010-11-15T11:54:19.370 に答える