パフォーマンスの概要

パフォーマンス とは、コンピューター・システムが特定のワークロードに応答する動作の仕方のことです。 パフォーマンスは、システムの応答時間、スループット、およびリソースの使用率によって測定されます。

また、次の事柄の影響も受けます。
  • システムで使用可能なリソース
  • リソースの使用頻度と共有の程度
一般に、システムを調整することにより、その費用対効果の比率を向上させます。 これには、次のような目標があります。
  • 処理費用を増やすことなく、より大きいワークロードまたは要求がより多いワークロードを処理する
  • 処理費用を増やすことなく、システムの応答時間を速くしたり、スループットを高くしたりする
  • ユーザーに対するサービスを低下させることなく、処理費用を削減する

パフォーマンス・チューニングにより、リソースをより効率的に使用できたり、システムに対してより多くのユーザーを追加できたりするなどのはっきりとした効果が現れる場合があります。 応答時間が速くなったことによるユーザーの満足度の向上などのその他の効果には、はっきりとは分からないものもあります。

パフォーマンス・チューニングのガイドライン

パフォーマンス・チューニングの全体的なアプローチを決定する際に、以下の指針に留意してください。
  • 収穫逓減の法則を覚えておく: 通常、パフォーマンスの効果を最大にするには、最初の努力が重要です。
  • チューニングのためのチューニングを行わない: チューニングは、 識別されている制約を軽減するために行ってください。 パフォーマンス上の問題の主要な原因ではないリソースのチューニングを行うと、実際には それ以降のチューニング作業が行いにくくなる可能性があります。
  • システム全体を考慮する: 他に影響を与えることなく 1 つのパラメーターまたはリソースのチューニングを行うことはできません。 調整を行う前に、その変更によってシステム全体がどのような影響を受けるかを考慮してください。 パフォーマンス・チューニングでは、様々なシステム・リソース間のトレードオフが必要になります。 例えば、入出力パフォーマンスを向上させるために、バッファー・プール・サイズを増やすことができます。しかし、バッファー・プールを増やすにはより多くのメモリーを必要とするため、パフォーマンスの他の局面は低下する可能性があります。
  • 一度に 1 つのパラメーターを変更する: 一度に複数の要素を変更しないでください。 すべての変更が有益であることを確信している場合でも、それぞれの変更の効果を評価することができなくなります。
  • レベルごとに測定と構成を行う: 一度にチューニングするシステムのレベルは 1 つにしてください。 システム・レベルには、以下のものがあります。
    • ハードウェア
    • オペレーティング・システム
    • アプリケーション・サーバーとリクエスター
    • データベース・マネージャー
    • SQL および XQuery ステートメント
    • アプリケーション・プログラム
  • ハードウェアおよびソフトウェアの問題を検査する: 一部のパフォーマンス問題は、 ハードウェアかソフトウェアのどちらか (あるいはその両方) にサービスを適用することによって修正することができます。 サービスをハードウェアまたはソフトウェアに適用する前に、システムのモニターとチューニングに余分な時間をかけないでください。
  • ハードウェアをアップグレードする前に問題を理解する: ストレージを増やしたりプロセッサーの能力を高めたりすることでパフォーマンスを即座に改善できるように思えても、 時間を取って障害がどこに存在しているのかを理解してください。 費用をかけてディスク装置を追加しても、それを活用するだけの処理能力やチャネルがないことに気付く場合があります。
  • チューニングを開始する前にフォールバック手順を適所に配置する: チューニングをしたものの予期しない性能低下が生じる場合、別の方法を試みる前に実行した変更内容を元に戻す必要があります。 元の設定を保存して、維持しない変更内容を簡単に取り消せるようにします。

パフォーマンスの向上プロセスの開発

パフォーマンスの向上プロセスは、 パフォーマンスのモニターおよびチューニングの局面への、反復的アプローチです。 このパフォーマンス・モニターの結果に基づいて、データベース・サーバーの構成を調整し、 データベース・サーバーを使用するアプリケーションに変更を加えます。

パフォーマンスのモニターおよびチューニングは、データを使用するアプリケーションの種類に関する知識、およびデータ・アクセスのパターンについての理解に基づいて決定します。 パフォーマンス要件は、アプリケーションの種類によって異なります。

パフォーマンスの改善プロセスすべてには、以下の基本的なステップが含まれています。
  1. パフォーマンスの目標を定義します。
  2. システムで主要な制約のパフォーマンス指針を設定します。
  3. パフォーマンスのモニター計画を立て、それを実行します。
  4. 継続的にモニター結果を分析し、チューニングを必要とするリソースを判別します。
  5. 一度に 1 つの調整を行います。

ある時点で、データベース・サーバーおよびアプリケーションのチューニングをしても、 パフォーマンスが向上しなくなる場合、ハードウェアをアップグレードする時期である可能性があります。

ユーザーが提供できるパフォーマンス情報

システム・チューニングが必要なことを示唆する最初の兆候は、 ユーザーからの問題報告かもしれません。 パフォーマンス目標を設定する時間や、包括的にモニターとチューニングを行う時間が十分にない場合は、 ユーザーの意見を聞いてパフォーマンスの問題と取り組むことができます。 以下のような幾つかの簡単な質問に答えることから開始します。
  • 応答が遅いとはどういう意味ですか? 期待している速さより 10% 遅いのでしょうか、それとも何十倍も遅いのでしょうか?
  • 問題に気付いたのはいつですか? 最近ですか、それともこれまでずっとですか?
  • 他のユーザーも同じような問題に直面していますか? 問題を訴えているユーザーは 1 人か 2 人ですか、 それともグループ全体ですか?
  • ユーザーのグループ全体が同じ問題に直面している場合、 それらのユーザーは同じローカル・エリア・ネットワークに接続していますか?
  • 特定のタイプのトランザクションまたはアプリケーション・プログラムに関連した問題と思われますか?
  • 何らかの発生パターンがありますか? 例えば、その問題は一日の特定の時刻に、または連続的に発生しますか?

パフォーマンス・チューニングの限界

パフォーマンス・チューニングの効果には限界があります。 システム・パフォーマンスの改善にかける必要のある時間と費用について考慮する際、余分の時間と費用をどの程度かけるとシステムのユーザーにとって役立つかを評価してください。

システムで応答時間やスループットに関する問題が生じる場合には、チューニングによってパフォーマンスが改善される場合が少なくありません。 しかし、さらにチューニングを行ってもこれ以上は効果がないという限界点が存在します。 その場合、目標と期待値を見直す必要があります。 パフォーマンスをさらに大幅に改善するには、ディスク装置の増加、 CPUs の高速化、CPU の追加、メイン・メモリーの増加、通信リンクの高速化、 またはこれらを組み合わせる必要があるかもしれません。