WCF サービス ログのデータベース バックエンドとして SQLite を使用したいと考えています。すべて問題ないように見えますが、実際のシステムからデータベース ログ ファイルを抽出し、ログの検査/分析のためにデータベースがロックされないようにするにはどうすればよいですか? このシステムは非常に負荷が大きいようで、データベース ログ ファイルを取得しようとするたびに、ロックが解除されます。
2928 次
3 に答える
0
SQLite のオンライン バックアップAPI を使用して、DB をロックせずにデータを抽出します。
于 2012-12-21T05:12:17.273 に答える
0
SQLite では、複数のプロセス/アプリケーションで同じデータベース ファイルを読み書き用に開くことができます (書き込み時にロックが発生しますが、大きな問題が発生することは一般的ではありません)。
新しい行を継続的にデータベースに記録するロギング プロセスを実行し、同時にオフロード/抽出プロセスで古い行を別の場所にコピーできるようにする必要があります。
ただし、データベースが開いているときに標準のコピー機能を使用してデータベースをファイルとしてコピーしないでください。破損する可能性が高いためです (Windows では、厳密なロックのために不可能な場合もあります)。
代わりに、標準の SQLite API (または SQLite をサポートするスクリプト言語) を使用してオフロード プロセスをデータベースに接続し、その API を使用して行を読み取り、別の SQLite データベースや大きな「実際の」SQL データベースなど、別の場所にそのデータのコピーを作成します。 MySQL、Postgres、または MSSQL (または、必要に応じてテキスト ファイル)。
于 2012-12-21T03:57:08.740 に答える