データベースの稼働状況を診断共有するサイト パフォーマンスセラピー
Statspackとは Statspack設定 statspackでの情報収集 statspackレポートの出力 便利スクリプト Oracleチューニング講座


                                  
第1章 Oracleのチューニングの基礎知識を身につける
システムのチューニングは、非常に複雑な作業です。設計、開発段階におけるチューニングから、運用開始後の継続的な監視の結果、必要となるチューニングなど様々です。Oracle RDBMSの具体的なチューニング方法に入る前に、チューニングにおける基礎知識を習得します。

チューニングとは
チューニングとは、システムのコンポーネントを目的に合うように変更することで、システムのパフォーマンスを向上させること(スループットを向上させ、レスポンスタイムを短縮すること)です。

  スループット
1秒間で100トランザクション処理数といった、単位時間あたりの処理量
  レスポンスタイム
問合せを発行してから結果が戻るまでの時間
バッチ処理を行ってから終了するまでの時間

  目標の設定
チューニングの作業は、漠然と「処理を速くしたい」という目標では終わることはありません。
目標を明確に定義します。定義したパフォーマンス目標に達したのであれば、すべてのチューニング作業を中止します。

例)
・オペレーターによる顧客情報入力のレスポンスタイムを3秒以内におさえる
・1日に200,000オーダーを処理する

NOTE
重要なのはメモリー上のヒット率が何%であるかではなく、各システムで設定した目標を満たしているかどうかです。

チューニングの必要性
パフォーマンス・チューニングを行うことにより、主に以下のような効果が得られます。

  余計な機材を購入せずにすむ、また構成を小型化できることによる、経費の削減
  高速なレスポンスタイム、優れたスループットによる企業の生産性、顧客満足度の向上

このようにパフォーマンス・チューニングは、経費削減だけでなく人的な利益にもつながります。

パフォーマンスに関する問題は通常、システム・リソースの競合や消耗が原因で発生します。多くの場合CPU、メモリーまたはディスク・ドライブの追加で一時的にパフォーマンスは改善されます。しかし、それはあくまでも一時的な改善であって、近い将来同様の問題に直面する可能性を持っています。
限られたシステムリソースを最大限に活かすことが重要です。

システム要件の確認
初期段階においてシステム要件を明確にし、正しくシステム・アーキテクチャを構成することは非常に重要です。特に明確化しておくべきポイントを以下に示します。

  システムでサポートすべきユーザー数
  ユーザー・インターフェイスは何を使うか
ユーザーとの距離
ユーザーがアクセスするデータ量
ユーザーのレスポンスタイムの要件
稼動時間(24時間のサービスが必要か)
リアルタイムでの処理が必要か
データベースの規模
必要なスループット
アプリケーション開発者、データベース管理者のスキル
予算上での制約はどれくらいか

チューニングのステップ
パフォーマンス・チューニングは、必ずしも問題が発生してから対処するものではありません。
一般的に設計・開発段階に行うチューニングが最も効果的です。
各ステップは、後のステップになるほどコストが大きくなります。また、各ステップは目標が達成されるまで繰返す必要があります。

  1)業務規則のチューニング
  ・システムへの実装前のビジネス・ルールの最適化
・共有サーバー構成の検討

2)データ設計のチューニング
・正規化、非正規化
・リレーション・シップ(主キー、外部キー)

3)アプリケーション設計のチューニング
・業務処理内容の効率的なアプリケーションへの取込み
・共通データのアプリケーションへのキャッシング

4)データベースの論理構造のチューニング
・データベースの論理構造の計画
・索引作成の過不足の確認

5)SQLのチューニング
・オプティマイザ
・配列処理
・行レベル・ロック
・PL/SQL

6)アクセス・パスのチューニング
・索引の作成、削除
・SQLの記述の見直し
・オプティマイザ・ヒントの使用

7)メモリー割当てのチューニング
・共有プール
・データベース・バッファ・キャッシュ
・REDOログ・バッファ
  
一般的なチューニング・ステップ
 

チューニングとコストの関係
8)I/Oおよび物理構造のチューニング
・ディスク、データの分散
・エクステントの動的拡張の回避
・行連鎖の解消

9)リソースの競合のチューニング
・ロールバック・セグメント
・データ・ブロック
・共有プール
・ラッチ

10)基礎を形成するプラットフォームのチューニング
・オペレーティング・システムのバッファ・キャッシュ・サイズ
・論理ボリューム・マネージャ
・各プロセスのメモリーとサイズ


NOTE
 チューニングにおける問題のうち、約8割がステップ5、6にあたるSQLの問題だといわれています。


第2章 SQLチューニングの基本とは