問題タブ [wal]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - バックグラウンド サービスと UI の更新と WAL の実装
私のアプリケーションでは、アラームを使用して毎晩 12 時にサービスを実行しています。すべてが意図したとおりに機能します。
3 つのフラグメント タブがあり、各タブにはリストビューがあり、リスト項目をクリックすると詳細ビューが表示されます。
ユーザーがたとえば 11:59 (サービスがデータベースから基になるデータを更新する前) にアプリを開くと、リスト ビューにデータが表示されますが、時計が 12 を打つと、処理が開始され、データベースがロックされます (私が持っている複数のスレッドが干渉するのを防ぐために、サービスの実行中に db に排他ロックを実装しました) ユーザーがリスト行をクリックすると、詳細ビューに空白のフィールドが表示され、DB がロックされて現在更新されているため、正しく表示されます。
この状況を回避するにはどうすればよいですか? [フラグメント] タブからサービスが実行されているかどうかを確認して、ローダー ダイアログを表示しようとしました。このダイアログは正しく表示できますが、終了するのが難しいと感じています。
それから:
しかし、バックグラウンドプロセスから終了する方法が気になります。私にできることはありますか?
これを行う 2 番目の方法は、先行書き込みログを有効にすることです。誰かが Android での WAL の実装に関する良い情報を見つけるのを手伝ってくれたら素晴らしいでしょう。
sqlite - SQLite:mmap()関数なしでWALを使用する方法はありますか?
パフォーマンスと信頼性の理由から、WAL モードを使用したいと考えています。ただし、私の環境には mmap() 関数がないため、SQLite を WAL でコンパイルできません (WAL には mmap() が必要です)。mmap() なしで WAL を使用できるように設定しPRAGMA locking_mode=EXCLUSIVE
ますが (この場合、WAL インデックスは共有ファイルではなくヒープ メモリ上に作成されます)、複数のデータベース接続を管理するアプリケーションには適していません。
1 つのプロセスで複数のデータベース接続 (スレッド間同時実行) で SQLite を使用していますが、mmap() はプロセス間メモリ共有にのみ使用されているようです。シングルプロセス環境で mmap() なしで WAL を使用する方法があると思うので。しかし、私は良い解決策を見つけることができません。この問題を解決するためのアイデアはありますか?
ありがとう。
sqlite - -wal と -shm を使用せずに、MOC のコンテンツをファイルに保存する方法は?
MOC
a の内容をファイルに保存したいmyFile.ext
。すべてがうまく機能し、データはファイルに保存されますが、さらに補助ファイルが必要です。
myFile.ext-wal
myFile.ext-shm
これらのファイルは私の目的 (の内容をMOC
ファイルに保存する) に必要ですか? データを 1 つのファイルで「発送」したいと考えています。さらに、データを再度取得するときは、URL
ofのみを使用しmyFile.ext
ます。
それらが必要でない場合、それらの作成を避けることは可能ですか?
postgresql - COPY FROM はトランザクション ログに書き込みますか?
postgres 9.3 では、このCOPY FROM ... STDIN;
コマンドはバルク データを挿入する最も速い方法です。これは、これらの挿入された行をトランザクション ログに書き込まないという代償を伴うものですか? Write-Ahead Logging を使用してセカンダリ サーバーを更新しているため、これが重要です。
java - 2M レコードを OrientDB にインポートした後の Java OutOfMemoryError / OrientDB WAL Flush Task エラー
インポート スクリプトの 1 つがすべてのデータのインポートを完了した後、それを再起動して、更新されたデータを取得しようとしました。最初に行うことは、最近更新されたレコードを取得することです。
ただし、それにより、Node スクリプトから次のエラーが発生しました。
そして、次のサーバー出力を受け取りました。
同時に実行されている他のインポート スクリプトも、次の理由で停止しました。
元のスクリプトを再度実行しようとした後、サーバーで次の出力が得られました。
ノード スクリプトの出力:
編集
メモリ制限を 2GB に増やした後、(以前の 2M レコードではなく) 5M レコードを挿入できましたが、まだこのエラーが発生しています。
python - iOS 7.0 で wal および shm 制約を使用して 2 つの sqlite データベースをマージする
私はsqliteデータベースとwalとcheckpointで更新する方法について多くのスレッドを読みましたが、インターネット上のすべての情報にもかかわらず、私は本当に理解していません.
デスクトップ コンピューター上の 2 つの sqlite データベースを Python スクリプトを使用してマージしますが、新しいファイル (store.data) を Xcode のフォルダーに戻し、古いファイルを置き換えると、実行時にアプリがクラッシュします (エラー 259)。これは、元の wal/shm ファイルが新しいデータベース (新しい情報/列/行を持つ) を認識しないために発生すると思いますが、このファイルから新しい wal/shm を作成する方法がわかりません。または、データベースをマージすると同時にそれらを変更する必要がありますか?
編集: sqlite ブラウザー アプリで PRAGMA wal_checkpoint(RESTART) を実行すると正常に動作します... Xcode フォルダー内の古いファイルを置き換えますが、新しいリビルドを作成した場合にのみ動作し、シミュレーターで開いた場合には動作しません...アプリを再構築せずに起動するだけなので、これは実際のデバイスでは問題になりませんか? それを回避する方法はありますか?
linux - データ破損の防止
私はARM9で実行されている組み込みLinuxに取り組んでいます。ファイルシステムは ext4 タイプ (rw、sync、noatime、data=writeback) です。unsync を有効にして、Write-Ahead-Loggin (WAL) モードで SQLite3 データベースに書き込み/読み取りを行うプロセスを実装しました。電力損失が発生した場合、DB の同期とチェックポイントによってすべてのデータを保存するのに約 2 秒かかります。しかし、それでも、私の場合は本当に良くないDBが壊れていることがあります。
私の目的のために新しい DB エンジンを書きたいと思います。DB が 1 つのファイルに保持される SQLite と同様の方法で。ただ、この場合、ヘッダーデータを1セクターに書き込み、残りのデータを少なくとも2セクター後に書き込むことを考えているため、DBのサイズは大きくなりますが、データを書き込むときに、ヘッダーを台無しにすることはありませんインデックスなどを保持するファイルの。そうすれば、SQLiteの動作と同様に、すべてのファイルではなく、最後のデータのみが破損します。
私の質問は、私のアプローチが正しいかどうかです。