Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - SQL の使用法 » データベース・パフォーマンスのモニタリングと改善 » データベース・パフォーマンスの改善 » パフォーマンス向上のためのヒント

 

異なるファイルの異なるデバイスへの配置

ディスク・ドライブは、最新のプロセッサや RAM よりオペレーション速度が非常に遅くなります。しばしば、ディスクによるページの読み込みまたは書き込みをただ待っていることが、データベース・サーバの処理を低速にする原因になっています。

異なる物理データベース・ファイルを異なる物理デバイスに入れると、データベースのパフォーマンスが向上する場合があります。たとえば、1 つのディスク・ドライブがキャッシュとデータベース・ページとの相互スワップを実行中の場合も、別のデバイスはログ・ファイルに書き込みができます。

このようなパフォーマンスの向上を得るためには、各デバイスを独立させます。小さい論理ドライブに分割した単一のディスクでは、利点はありません。

SQL Anywhere では次の 4 種類のファイルが使用されます。

  1. データベース (.db)

  2. トランザクション・ログ (.log)

  3. トランザクション・ログ・ミラー (.mlg)

  4. テンポラリ・ファイル (.tmp)

「データベース・ファイル」は、データベースの内容全体を保持します。1 つのファイルで 1 つのデータベースを構成する方法と、最高 12 の DB 領域を追加する方法があります。DB 領域は、同じデータベースの一部を入れる追加ファイルです。データベース・ファイルと DB 領域のロケーションを選択します。

「トランザクション・ログ・ファイル」は、障害発生時にデータベースの情報をリカバリするのに必要です。さらにデータベースを保護するために、3 種類目のファイル「トランザクション・ログ・ミラー・ファイル」で、トランザクション・ログの重複コピーを管理できます。SQL Anywhere では、同じ情報が同時にこれらの各ファイルに書き込まれます。

ヒント

トランザクション・ログ・ミラー・ファイルを (使用する場合に) 物理的に別個のドライブに置くと、ディスク障害からデータベースを保護できます。また、ログ・ファイルとログ・ミラー・ファイルへの書き込み効率が高まるため、SQL Anywhere が高速になります。トランザクション・ログ・ファイルとトランザクション・ログ・ミラー・ファイルのロケーションを指定するには、トランザクション・ログ (dblog) ユーティリティ、または Sybase Central のログ・ファイル設定の変更ウィザードを使用します。トランザクション・ログ・ユーティリティ (dblog)トランザクション・ログの場所の変更を参照してください。

SQL Anywhere で、ソートや UNION 処理など、操作用キャッシュで使用できる領域よりも多くの領域が必要な場合は、「テンポラリ・ファイル」が使用されます。こうした領域が必要な場合、データベース・サーバは、通常はその領域を集中的に使用します。データベース全体のパフォーマンスは、テンポラリ・ファイルを含むデバイスの速度に大きく依存します。

ヒント

テンポラリ・ファイルが、データベース・ファイルのあるデバイスとは物理的に異なる高速デバイス上にあると、通常は SQL Anywhere の実行が高速になります。これは、テンポラリ・ファイルを使用する必要がある大部分のオペレーションは、データベースから多くの情報を取り出す必要があるためです。情報を 2 つの別々のディスクに置くと、オペレーションを同時に行うことができます。

テンポラリ・ファイルのロケーションは慎重に選択します。テンポラリ・ファイルのロケーションは、データベース・サーバの起動時に -dt サーバ・オプションを使用して指定できます。テンポラリ・ファイルのロケーションを指定せずにデータベース・サーバを起動した場合は、SQL Anywhere で以下の環境変数がこの順序のとおりにチェックされます。

  1. SATMP

  2. TMP

  3. TMPDIR

  4. TEMP

環境変数が定義されていない場合、テンポラリ・ファイルは、Windows の場合は現在のディレクトリ、UNIX の場合は /tmp ディレクトリに作成されます。

コンピュータに十分な数の高速デバイスがある場合、これらのファイルをそれぞれ別のデバイスに入れることで、パフォーマンスをさらに改善できます。データベースを複数の DB 領域に分割し、別のデバイスに配置することも可能です。その場合は、テーブルを個別の DB 領域にグループ分けして、一般的なジョイン操作によって異なる DB 領域から情報を読み込めるようにします。

すべてのテーブルやインデックスをシステム DB 領域以外のロケーションに作成した場合、システム DB 領域は、チェックポイント・ログとシステム・テーブルの保存にのみ使用されます。この設定は、パフォーマンス上の理由からチェックポイント・ログを他のデータベース・オブジェクトとは別のディスクに保存する場合に便利です。別の DB 領域にベース・テーブルを作成するには、IN DBSPACE 句を使用するようにすべての CREATE TABLE 文を変更して、代わりの DB 領域を指定するか、テーブルを作成する前に default_dbspace オプションの設定を変更します。テンポラリ・テーブルは TEMPORARY DB 領域だけに作成できます。default_dbspace オプション [データベース]CREATE TABLE 文を参照してください。

ベース・テーブルやテンポラリ・テーブルのデフォルト DB 領域の詳細については、追加 DB 領域の使用を参照してください。

同様の方式では、テンポラリ・ファイルとデータベース・ファイルの RAID デバイスまたはストライプ・セットへの配置があります。これらのデバイスは論理ドライブとして動作しますが、ファイルを多くの物理デバイスに分散し、複数のヘッドを使用して情報にアクセスすることによってパフォーマンスを飛躍的に向上させます。

データベース・サーバの起動時に -fc オプションを指定して、データベース・サーバでファイル・システムがいっぱいになった場合のコールバック関数を実装できます。-fc サーバ・オプションを参照してください。

参照