REDOログ・ファイルの設定で更新処理をチューニング:Oracle SQLチューニング講座(13)(2/3 ページ)
本連載では、Oracleデータベースのパフォーマンス・チューニングの中から、特にSQLのチューニングに注目して、実践レベルの手法を解説する。読者はOracleデータベースのアーキテクチャを理解し、運用管理の実務経験を積んでいることが望ましい。対象とするバージョンは現状で広く使われているOracle9iの機能を基本とするが、Oracle 10gで有効な情報も随時紹介していく。(編集局)
オンラインREDOログ・ファイルの最適値を求める
それでは、オンラインREDOログ・ファイルの設定が適切でない場合、更新処理のパフォーマンスにどのような影響を与えるのか、実際に例を挙げて見てみましょう。以下の例は、オンラインREDOログ・ファイルのサイズが100Mbytesの環境と1Mbytesの環境で、同一の更新処理を実行し、処理時間と実行統計を取得した結果になります。
読み取りブロック数、発生したREDO SIZEはほぼ等しいにもかかわらず、オンラインREDOログ・ファイルサイズが1Mbytesの場合は、倍近くの時間を要しています。この差は、オンラインREDOログ・ファイルサイズが小さすぎることにより引き起こされています。ログ・スイッチ時のチェックポイント待機状況は、動的パフォーマンスビュー「V$SESSION_EVENT」により確認することができます。オンラインREDOログ・ファイルサイズが1Mbytesの場合の確認結果が図4になります。
図4の「TIME_WAITED」(単位1/100秒)を確認することで、チェックポイントの完了までに271.46秒の待機が発生していたことが分かります。
上記の結果からも分かるように、大量更新処理のパフォーマンスには、オンラインREDOログ・ファイルのサイズが非常に重要となります。オンラインREDOログ・ファイルの適切なサイズはシステムによって異なりますので、ログ・スイッチの回数が1時間に2〜3回以下に収まることを目安にサイズを調整していきます。一般的なシステムでは、オンラインREDOログ・ファイルのサイズは、100Mbytes〜数Gbytes程度となります。
なお、オンラインREDOログ・ファイルのサイズを大きくした場合、以下のような影響が発生しますので、パフォーマンスとそのほかの影響のバランスを考慮したうえで、サイズを決定してください。
- 極端に大きなオンラインREDOログ・ファイルを作成し、初期化パラメータの設定(「FAST_START_MTTR_TARGET」に大きな値を設定する、「LOG_CHECKPOINT_INTERVAL」を「0」に設定するなど)によりチェックポイントの発生頻度を低くしてしまうと、障害発生時のクラッシュ・リカバリにより多くの時間を必要としてしまう。
- 万一、カレントのオンラインREDOログ・ファイルが障害を受けた場合に消失するトランザクション量が多くなる(アーカイブ・ログモードで運用時のみ。アーカイブ・ログモードでデータベースを運用している場合、アーカイブ処理はREDOログ・ファイルが満杯にならないと発生しないため)。
Copyright © ITmedia, Inc. All Rights Reserved.