ホームページ  >  記事  >  ロガーのバッファ サイズ ログの用途

ロガーのバッファ サイズ ログの用途

青灯夜游
青灯夜游オリジナル
2023-03-13 16:27:316163ブラウズ

この機能は、開発時に使用される問題分析を容易にするために、エンジニアに使用状況情報と記録をフィードバックする機能であり、ユーザー自身がアップロード ログを生成することはほとんどないため、ユーザーにとっては役に立ちません。ロギング バッファは、ディスクに書き込まれる REDO ログの変更ベクトルを短期間保存するために使用される小さな一時領域です。ディスクへのログ バッファーの書き込みは、複数のトランザクションからの変更ベクトルのバッチです。それでも、ログ バッファー内の変更ベクトルはほぼリアルタイムでディスクに書き込まれ、セッションが COMMIT ステートメントを発行すると、ログ バッファーの書き込み操作がリアルタイムで実行されます。

ロガーのバッファ サイズ ログの用途

このチュートリアルの動作環境: Windows 7 システム、Dell G3 コンピューター。

ログ レコーダーのバッファ サイズ ログの機能は、主に使用状況情報をフィードバックし、問題分析を容易にするためにエンジニアに記録するために使用されます (開発中に使用されます)。ユーザー自身がアップロード ログを生成することはあまりないため、ユーザーにとっては使い物にならない。

ロギング バッファは、ディスクに書き込まれる REDO ログの変更ベクトルを短期的に保存するために使用される小さな一時領域です。 「変更ベクトル」とは、特定のオブジェクトに適用される変更です。DML ステートメントを実行すると、データに適用される変更ベクトルが生成されます。

REDO ログを使用すると、データベースはデータが決して失われないようにできます。データ ブロックが変更されるたびに、ブロックに適用された変更ベクトルが REDO ログに書き込まれます。データ ファイルを復元する必要がある場合は、 REDO ログを使用すると、変更ベクトルを抽出してデータ ファイルのバックアップに適用できます。

ロガーのバッファ サイズ ログの用途

セッションサーバープロセスは、REDO レコードを REDO ログファイルに直接書き込みません。そうしないと、DML ステートメントが書き込まれるたびに、セッションはディスク I/O 操作を待機する必要があります。完了を実行しました。代わりに、セッションは REDO レコードをメモリ内のログ バッファに書き込みます。これはディスクに書き込むよりもはるかに高速です。その後、ログ バッファ (複数のセッションの交互の変更ベクトルを含む場合がある) が REDO ログ ファイルに書き込まれます。したがって、ディスクへのログ バッファーの書き込みは、複数のトランザクションからの変更ベクトルのバッチです。それでも、ログ バッファー内の変更ベクトルはほぼリアルタイムでディスクに書き込まれ、セッションが COMMIT ステートメントを発行すると、ログ バッファーの書き込み操作がリアルタイムで実行されます。書き込み操作は、ログ ライター バックグラウンド プロセス (LGWR) によって実行されます。

ロガーのバッファ サイズ ログの用途

特長

ログ バッファは、非常に寿命の短い記憶領域であるため、他のメモリ構造に比べて小さくなります。そこに変更ベクトルを挿入し、ほぼリアルタイムでディスクに流し込みます。ログ バッファーは最大でも数 MB より大きくする必要はありません。実際、デフォルトより大きく設定すると、パフォーマンスに非常に悪影響を及ぼす可能性があります。デフォルト値は Oracle サーバーによって決定され、サーバー ノードの CPU の数によって異なります。

開発者向けオプションには、「ロガー バッファ サイズ」というオプションがあります。デフォルトは 256K です。ログは循環的にバッファに書き込まれます。通常の状況では、最も古いものがいっぱいになります。ログは新しいログ用のスペースを確保するために削除されます。

ロガーバッファのサイズは個人に合わせて調整するのが一般的で、小さいほうがクリーンアップが早くなりますが、あまり気にしない場合は100程度など少し大きめに設定しても問題ありません。

理論的には、特定の値の範囲内では、大きいほど優れています (開くことができるアプリケーション層の数が決まるため)。

ユーザー自身がアップロードログを生成することは少ないため、最小限に調整する必要はありません。ユーザーはデフォルト設定を使用できます。たとえば、高度なデバイス構成の場合、ユーザーの個別のニーズに合わせてデフォルト値または最大値を増やすことができます。

ロガーのバッファ サイズ ログの用途

設定方法

ログ バッファーをデフォルト値より小さく設定することはできません。これを実行しようとすると、ログ バッファーはデフォルトのサイズに設定されます。デフォルトよりも大きいバッファを作成することも可能ですが、これは一般的に推奨されません。問題は、COMMIT ステートメントが発行されるとき、コミット処理の一部にログ バッファの内容がディスク上の REDO ログ ファイルに書き込まれることです。書き込み操作はリアルタイムで実行され、その進行中、COMMIT を発行したセッションは一時停止されます。コミット処理は、Oracle アーキテクチャの重要な部分です。コミットされたトランザクションが失われないようにするため、キャッシュ内のデータ ブロックは、データ ブロックが変更され (トランザクションが完了することを意味し)、変更ベクトルがディスク上の REDO ログに書き込まれるまで変更できません (つまり、必要に応じてトランザクションを復元できます) コミット完了メッセージをセッションに返します。ログ バッファーが大きいということは、COMMIT ステートメントの発行時により多くのコンテンツを書き込む必要があり、完了メッセージが発行されてセッションが作業を再開するまでに時間がかかることを意味します。

ロガーのバッファ サイズ ログの用途

イラスト:

  • 一部のアプリケーションでは、ログ バッファ サイズをデフォルトより大きく設定する必要がありますが、通常はデフォルトのログ バッファを使用してチューニングを開始します。

  • ログ バッファーはインスタンスの起動時に割り当てられ、その後インスタンスを再起動しない限りサイズを変更することはできません。循環バッファです。現在の書き込みアドレスは、サーバー プロセスが変更ベクトルを書き込むにつれて前後に移動します。ログ ライター プロセスはベクトルをバッチで書き込みます。その時点で、ログ ライター プロセスが占めていたスペースが利用可能になり、より多くの変更ベクトルでカバーできるようになります。アクティビティのピーク時には、ログ ライター プロセスが書き出すよりも速く変更ベクトルが生成される場合があります。これが発生すると、ログ ライターがバッファをクリアする間、すべての DML アクティビティが数ミリ秒間停止します。

  • Oracle アーキテクチャでは、ログ バッファをディスクにダンプすることが基本的なボトルネックの 1 つです。 DML は、LGWR よりも高速に変更ベクトルをオンライン REDO ログ ファイルにダンプすることはできません。

  • REDO 生成がデータベースのパフォーマンスを制限する要因である場合、唯一の選択肢は RAC を使用することです。 RAC データベースでは、各インスタンスに独自のログ バッファと独自の LGWR があります。これは、REDO データをディスクに並行して書き込む唯一の方法です。

ロガーバッファーに関する注意:

1. サイズ設定: 一部のアプリケーションでは、ログをバッファーする必要があります。エクステント サイズは次のとおりです。デフォルトよりも高く設定されていますが、通常はデフォルトのログ バッファが調整の開始に使用されます。

2. インスタンスの割り当て: ログ バッファはインスタンスの起動時に割り当てられるため、インスタンスを再起動しないと、その後のサイズを調整できません。循環バッファです。現在の書き込みアドレスは、サーバー プロセスが変更ベクトルを書き込むにつれて前後に移動します。

3. バッチ処理: ログ ライター プロセスはバッチ モードでベクトルを書き込みます。この時点で、ログ ライター プロセスが占有しているスペースが利用可能になり、より多くの変更ベクトルでカバーできるようになります。アクティビティのピーク時には、ログ ライター プロセスが書き出すよりも速く変更ベクトルが生成される場合があります。これが発生すると、ログ ライターがバッファをクリアする間、すべての DML アクティビティが数ミリ秒間停止します。

関連知識の詳細については、FAQ 列をご覧ください。

以上がロガーのバッファ サイズ ログの用途の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。