Mongod書き込み操作の操作
Mongodは主に、共有ビューのメモリで書き込み操作をホストします。実際のディスクにメモリマッピングがあるため、共有と呼ばれます。
たとえば、ユーザーのデータファイルはデータddに保持され、メモリマッピングがあります。ここでは、最初にすべてのデータをメモリにプッシュし、指定された間隔の後、データをメモリにフラッシュします。これは60秒ごとに発生し、ユーザーはこのプロセスに影響を受けません。
ここでは、このプロセスはジャーナルなしオプションと呼ばれます。これは、メモリからディスクにデータを保存するために60秒の遅延がある場合、または突然のシャットダウンがある場合、メモリ内のデータが取得されない可能性があることを意味します。したがって、ジャーナリングはここで関連するようになります。
ジャーナリングはバージョン2.4.10より前ではデフォルトで無効にされていましたが、その後は有効になっていることを知っておくことが重要です。
mongodプロセスが開始された瞬間に、次のステートメントを確認できます。
Journal dir = D:Rana2custom datajournal
ここで、ジャーナルディレクトリはデータディレクトリ内の子ディレクトリであり、デフォルトで有効になっています。
MongoDBのジャーナリングとは何ですか?
このプロセスでは、mongodで書き込み操作が発生し、プライベートビューに変更が加えられます。最初のブロックはメモリで、2番目のブロックは「マイディスク」です。 「ジャーナルコミット間隔」と呼ばれる指定された間隔の後、プライベートビューはそれらの操作をジャーナルディレクトリ(ディスクにある)に書き込みます。
ジャーナルのコミットが発生すると、mongodはデータを共有ビューにプッシュします。プロセスの一部として、共有ビューから実際のデータディレクトリに書き込まれます(このプロセスはバックグラウンドで行われるため)。基本的な利点は、サイクルが60秒から200ミリ秒に短縮されたことです。
マップ側がハイブに参加します
いずれかの時点で早期剥離が発生するか、フラッシュディスクが最後の59秒間使用できないままであるシナリオでは(ジャーナルディレクトリ/書き込み操作の既存のデータを念頭に置いて)、次にmongodが起動すると、基本的にすべての書き込み操作が再生されます実際のデータディレクトリにログを記録して書き込みます。
使い方?
ここでは、コミットが発生すると、同じ操作が共有ビューで再生され、60秒後にフラッシュディスクが発生します。
フラッシュされた後、データが処理されます。ここのデータは、ジャーナルディレクトリで処理済みとしてマークされます。つまり、60秒ごとに、コピーしたデータとジャーナルから削除されるはずのデータをチェックします。
ジャーナリングの使用はログの使用に似ています。その理由は、耐久性を高めるために書き込み操作ログを作成するためです。ジャーナリングは一時的なストレージです。つまり、書き込み操作ログのみを保留中のジャーナルディレクトリに保持します。また、共有ビューにはデータがありますが、ジャーナルディレクトリには操作があります。
たとえば、ユーザーがジャーナリングなしでデータを書き込んでいる場合、どのデータが書き込まれたとしても、そのメモリマッピングにより、ユーザーはデータが書き込まれた場所を知ることができます。
プライベートビューと共有ビュー間のリンク
コミットが発生すると、ジャーナルディレクトリでプロセスとしてマークされ、共有/プライベートビューの現在のビューに対して別のマッピングが行われます(データ共有なし)。
グラフでは、青い項目はすべてRAM(ランダムアクセスメモリ)にあり、サフランはディスクを示しています。
場合によっては、データがデータディレクトリにフラッシュされていないが、書き込み操作がデータディレクトリにある場合、mongodは再処理し、書き込み操作をデータディレクトリに適用します。
注意すべき重要な点は、ジャーナルがコミットされる前にクラッシュが発生するシナリオでは、添付200ミリ秒以内に失われます。
Pythonでの印刷とは
また、ジャーナルディレクトリには、実際の操作を記述し続けることに注意してください。
次のようなステートメントの例では ‘db.class.insert’ これは挿入操作であり、データはクラス操作に挿入されます。したがって、クラス操作は実際には残りませんが、操作は存在します。
ジャーナルの使用が遅れると、パフォーマンスに影響を与えることにも注意する必要があります。
非同期プロセスとしてバックグラウンドでジャーナリングを使用し、同期的に操作で何も実行しないようにすることもできます。ジャーナリングは本番環境でも推奨されます。
次に、「200ミリ秒」のジャーナルコミット間隔の時間枠を構成できます。これは、「– –ジャーナルコミット間隔」で3〜300ミリ秒の範囲で有効にできます。これはすべて、機能していない要件(書き込みが発生する頻度とジャーナルディレクトリに書き込みたい頻度)。大量の書き込み操作が行われている場合は、ミリ秒を短くすることをお勧めします。
プライベートは共有ビューにマップされるため、プライベートビューは実際のデータを保持することにも注意してください。ここでの共有ビューは、データディレクトリにフラッシュします。
オブジェクトを配列phpに変換します
このプロセスで得られる利点は、サーバーがクラッシュし、フラッシュに書き込む必要のあるデータがない場合に、mongodを再起動する次のサーバーがジャーナルディレクトリの回復をチェックすることです。データディレクトリでの操作を回復、再生、書き込みしてから起動します。
質問がありますか?コメントセクションでそれらに言及してください。折り返しご連絡いたします。
関連記事: