sql >> データベース >  >> RDS >> Oracle

Oracleのlogging/nologgingオプションの目的は何ですか

    LOGGING / NOLOGGINGは、REDOおよびUNDOの生成を減らすために、ダイレクトパス書き込みの有効化を管理するのに役立ちます。これは、回復可能性とパフォーマンスの間の微妙なバランスを制御するいくつかの方法の1つです。

    Oracleアーキテクチャの背景情報

    REDO オラクルが耐久性、つまりACIDの「D」を提供する方法です。トランザクションがコミットされると、変更は必ずしもデータファイルにきちんと保存されるとは限りません。これにより、処理が高速になり、バックグラウンドプロセスで一部の作業を処理できるようになります。 REDOは変更の説明です。これは、複数のディスクの「ダム」ログにすばやく保存されます。変更は高速であり、コミットが返されてから1マイクロ秒後にサーバーの電源が切れた場合、OracleはREDOログを調べて、変更が失われていないことを確認できます。

    元に オラクルが一貫性、つまりACIDの「C」を提供するのに役立ちます。変更を元に戻す方法の説明が格納されます。この情報は、テーブルを読み取り、使用された値を知る必要がある別のプロセスで必要になる場合があります。 古い時点になります。

    ダイレクトパス書き込み REDO、UNDO、キャッシュ、その他の機能をスキップして、データファイルを直接変更します。これは、多くの環境で高速ですが潜在的に危険なオプションです。そのため、これを制御するための紛らわしいオプションが多数あります。ダイレクトパス書き込みは、INSERTSにのみ適用され、以下で説明するシナリオにのみ適用されます。

    何もしない場合、デフォルトのオプションが最も安全なLOGGINGです。

    ダイレクトパス書き込みを制御する多くの方法

    LOGGING / NOLOGGINGは、ダイレクトパス書き込みを制御するためのいくつかのオプションの1つです。 からこの表を見てください。 AskTom さまざまなオプションがすべてどのように連携するかを理解するには:

    Table Mode    Insert Mode     ArchiveLog mode      result
    -----------   -------------   -----------------    ----------
    LOGGING       APPEND          ARCHIVE LOG          redo generated
    NOLOGGING     APPEND          ARCHIVE LOG          no redo
    LOGGING       no append       ARCHIVE LOG          redo generated
    NOLOGGING     no append       ARCHIVE LOG          redo generated
    LOGGING       APPEND          noarchive log mode   no redo
    NOLOGGING     APPEND          noarchive log mode   no redo
    LOGGING       no append       noarchive log mode   redo generated
    NOLOGGING     no append       noarchive log mode   redo generated
    

    FORCE LOGGINGは、これらすべての設定を上書きできます。おそらく私が知らない他のいくつかのスイッチがあります。そしてもちろん、ダイレクトパスを妨げる多くの制限があります-トリガー、外部キー、クラスター、インデックス編成テーブルなど。

    ルールは、インデックスに対してさらに制限されます。インデックスは常に DMLステートメント中にREDOを生成します。 CREATE INDEX ... NOLOGGINGなどのDDLステートメントのみ またはALTER INDEX ... REBUILD NOLOGGINGインデックスでは、REDOは生成されません。

    なぜそんなに多くの方法があるのですか?回復可能性は非常に重要であり、役割が異なれば問題に対する見方も異なる可能性があるためです。また、一部の人の決定が他の人の決定を上書きする必要がある場合もあります。

    開発者 ステートメントレベルで「モードの​​挿入」を決定します。 /*+ APPEND */を使用すると、多くの奇妙なことが起こる可能性があります ヒントと開発者は、いつ使用するかを慎重に選択する必要があります。

    アーキテクト オブジェクトレベルで「テーブルモード」を決定します。一部のテーブルは、開発者がどれだけ速く挿入したいかに関係なく、常に回復可能でなければなりません。

    データベース管理者 データベースモードまたはテーブルスペースモードで、「アーカイブログ」とFORCELOGGINGを決定します。おそらく、組織は特定のデータベースの回復を気にしないので、それをNOARCHIVELOGモードに設定します。または、組織にはすべてが回復可能でなければならないという厳格なルールがあるため、テーブルスペースをFORCELOGGINGに設定します。



    1. Mysql varchar固有の列varchar(255)とvarchar(50)

    2. ベストプラクティス:mySQLファイルをPHPにインポートします。分割クエリ

    3. NetBeansからリモートでjarをデバッグする方法

    4. php 5.x 7.x、ssl pdoエラー:ピア証明書CN =`someName'が予期されたCN='someIP'と一致しませんでした