ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebLogic Server パフォーマンス チューニング ガイド
11g リリース 1 (10.3.1)
B55570-01
 

目次
目次

戻る
戻る
 
次へ
次へ
 

8 データベースのチューニング

データベースがエンタープライズ レベルのボトルネックになる可能性もあります。データベースの最適なパフォーマンスを実現するには、この節のチューニング ガイドラインと、使用しているデータベースの製品マニュアルのチューニング ガイドラインに従ってください。

一般的な推奨事項

この節では、データベースのチューニングに関する全般的な推奨事項を示します。

データベース固有のチューニング

この節では、Oracle、SQL Server、および Sybase のチューニングに関する基本的な推奨事項を示します。


注意 :

各データベースのベンダが提供するマニュアルのチューニング ガイドラインも必ず確認してください。

Oracle

この節では、Oracle のパフォーマンスのチューニングについて説明します。

  • プロセス数 - ほとんどのオペレーティング システムでは、Oracle サーバへの接続ごとにシャドウ プロセスを生成して接続をサービスします。したがって、Oracle で使用できるプロセスの最大数は、同時に処理できるユーザの数と、Oracle サーバが使用するバックグラウンド プロセスの数をカバーできる値に設定しなければなりません。通常、デフォルトの最大数では、並行処理するオペレーションの数が多いシステムには対応できません。プラットフォーム固有の問題については、Oracle の管理者ガイドを参照してください。このパラメータの現在の設定値は、次のクエリを使用して取得できます。

    SELECT name, value FROM v$parameter WHERE name = 'processes';
    
  • バッファ プール サイズ - バッファ プールは、Oracle サーバの SGA (system global area) の最も大きな部分です。これは、Oracle サーバがディスクから読み込んだデータをキャッシュする場所です。read-mostly アプリケーションの場合、データベースのパフォーマンスに影響する最も重要な統計は、バッファ キャッシュ ヒット率です。バッファ プールのサイズは、キャッシュ ヒット率が 95% 以上になる程度に大きくする必要があります。バッファ プールのサイズは、init.ora ファイルの db_cache_size パラメータの値 (データベース ブロック数) を変更して設定します。

  • 共有プール サイズ - 共有プールは、Oracle サーバの SGA (system global area) の重要な部分です。SGA は、Oracle データベース インスタンスのデータおよび制御情報を格納する共有メモリのグループです。複数のユーザが同時に同じインスタンスに接続した場合、これらのユーザはそのインスタンスの SGA のデータを共有します。SGA の共有プール部分には、2 つの主な領域 (ライブラリ キャッシュとディクショナリ キャッシュ) のデータがキャッシュされます。ライブラリ キャッシュには、SQL 関連の情報と制御構造 (解析済みの SQL 文、ロックなど) が格納されます。ディクショナリ キャッシュには、SQL の処理に必要なメタデータが格納されます。

    ほとんどのアプリケーションでは、共有プール サイズが Oracle のパフォーマンスに大きく影響します。共有プールが小さすぎると、限られた大きさの空間を管理するためだけにサーバのリソースが消費されてしまいます。これにより CPU リソースが消費され、複数のキャッシュの並行管理に制限のある Oracle では競合が発生する原因となります。トリガやストアド プロシージャを数多く使用すると、より大きな共有プールが必要となります。SHARED_POOL_SIZE 初期化パラメータを使用して、共有プールのサイズをバイト単位で指定できます。

    次のクエリを使用すると、共有プール内の空きメモリ量をモニタできます。

    SELECT * FROM v$sgastat
    WHERE name = 'free memory' AND pool = 'shared pool';
    
  • 最大オープン カーソル数 - Oracle サーバのすべてのリソースが 1 つの接続によって消費されないようにするには、OPEN_CURSORS 初期化パラメータを使用して接続ごとのオープン カーソルの最大数を制限します。残念ながら、このパラメータのデフォルト値は WebLogic Server のようなシステムには小さすぎます。カーソル情報は、次のクエリを使用してモニタできます。

    SELECT name, value FROM v$sysstat
    WHERE name LIKE 'opened cursor%';
    
  • データベース ブロック サイズ - ブロックは、Oracle におけるデータ格納の基本単位で、I/O の最小単位でもあります。1 つのデータ ブロックは、ディスク上の物理データベースの特定のバイト数に相当します。このブロックという概念は Oracle RDBMS に固有のものですので、基底のオペレーティング システムのブロック サイズと混同しないようにしてください。ブロック サイズは物理的なストレージに影響するため、この値を設定できるのはデータベースの作成時に限られ、データベース作成後は変更できません。このパラメータの現在の設定値は、次のクエリを使用して取得できます。

    SELECT name, value FROM v$parameter WHERE name = 'db_block_size';
    
  • ソート領域のサイズ - ソート領域を大きくすると、クエリの処理中にメモリ内でソートを実行できるため、大規模なソートのパフォーマンスが向上します。ソート領域は接続ごとに 1 つしか確保できないため、このサイズの設定は重要になります。通常、この init.ora パラメータのデフォルト値は 6 ~ 8 データ ブロックです。この値は通常の OLTP 処理には十分ですが、意思決定支援処理、大規模なバルク処理、大規模なインデックス関連の処理などを行う場合は、より大きな値を設定しておく必要があります。この種の処理を実行する場合は、init.ora パラメータを次のようにチューニングします (デフォルトの設定値は 8K データ ブロック)。

    sort_area_size = 65536
    sort_area_retained_size = 65536 
    

Microsoft SQL Server

以下に、Microsoft SQL Server データベースのパフォーマンス チューニング パラメータに関するガイドラインを示します。これらのパラメータの詳細については、Microsoft SQL Server のマニュアルを参照してください。

  • 高速 I/O デバイスには tempdb を格納する。

  • perfmon が I/O の増加を示す場合は回復間隔を広くする。

  • 2KB 以上の I/O ブロック サイズを使用する。

Sybase

以下に、Sybase データベースのパフォーマンス チューニング パラメータに関するガイドラインを示します。これらのパラメータの詳細については、Sybase のマニュアルを参照してください。

  • 回復間隔を狭めると、チェックポイント処理がより頻繁に発生するため I/O 処理が増加する。

  • 2KB 以上の I/O ブロック サイズを使用する。

  • Sybase では SMP (symmetric multiprocessor) 環境でエンジンの数を制御するが、この設定の推奨値は CPU 数から 1 を引いた値とされている。