データベースのファイルグループの最適化

運用環境BizTalk Server環境では、ファイル入出力 (I/O) の競合は、多くの場合、制限要因 (ボトルネック) です。 BizTalk Serverはデータベースを集中的に使用するアプリケーションであり、BizTalk Serverによって使用されるSQL Serverデータベースは非常にファイル I/O を集中的に使用します。 このトピックでは、ファイル I/O 競合の発生を最小限に抑え、BizTalk Server ソリューションの全体的なパフォーマンスを向上させるために、SQL Serverのファイルとファイル グループの機能を最適に使用する方法について説明します。

概要

スループットが増加すると、すべてのBizTalk Serverソリューションで最終的にファイル I/O 競合が発生します。 I/O サブシステム (ストレージ エンジン) は、リレーショナル データベースの重要なコンポーネントです。 通常、データベースの実装を成功させるには、プロジェクトの初期段階で慎重に計画を立てる必要があります。 計画では、次の問題について検討する必要があります。

  • RAID (Redundant Array of Independent Disks) デバイスなど、使用するディスク ハードウェアの種類。

  • ファイルとファイル グループを使用してディスク上のデータを割り当てする方法。 SQL Serverでのファイルとファイル グループの使用の詳細については、「データベース ファイルとファイル グループ」を参照してください。

  • データにアクセスするときのパフォーマンスを向上させるために最適なインデックス設計を実装する。 インデックスの設計の詳細については、「インデックスの 設計」を参照してください。

  • 最適なパフォーマンスを得るためにSQL Server構成パラメーターを設定する方法。 SQL Serverの最適な構成パラメーターの設定の詳細については、「サーバー構成オプション」を参照してください。

    BizTalk Serverの主な設計目標の 1 つは、メッセージが失われることがないようにすることです。 メッセージが失われる可能性を軽減するために、メッセージはメッセージの処理時に MessageBox データベースに頻繁に書き込まれます。 メッセージがオーケストレーションによって処理されると、メッセージはオーケストレーション内のすべての永続化ポイントで MessageBox データベースに書き込まれます。 これらの永続化ポイントにより、MessageBox はメッセージと関連状態を物理ディスクに書き込みます。 スループットが高くなると、この永続化によってディスクの競合が大幅に発生し、ボトルネックになる可能性があります。

    SQL Serverのファイルとファイル グループ機能を最適に使用することで、ファイル IO のボトルネックに効果的に対処し、BizTalk Server ソリューションの全体的なパフォーマンスを向上させることができます。

Note

この最適化は、経験豊富なSQL Serverデータベース管理者のみが実行し、すべてのBizTalk Serverデータベースが適切にバックアップされた後にのみ行う必要があります。 この最適化は、BizTalk Server環境内のすべてのSQL Serverコンピューターで実行する必要があります。

SQL Serverファイルとファイル グループを使用すると、複数のディスク、複数のディスク コントローラー、または RAID (独立ディスクの冗長アレイ) システム間でデータベースを作成できるため、データベースのパフォーマンスを向上させることができます。 たとえば、コンピューターにディスクが 4 個ある場合は、データ ファイル 3 つとログ ファイル 1 つから構成されるデータベースを、各ディスクにファイルを 1 つずつ配置して作成できます。 データにアクセスすると、4 つの読み取り/書き込みヘッドが同時にデータに並列でアクセスできます。 これにより、データベース操作が大幅に高速化されます。 SQL Server ディスクのハードウェア ソリューションを実装する方法の詳細については、「SQL Server オンライン ブックのデータベース パフォーマンス」を参照してください。

さらに、テーブルは特定のファイル グループに作成できるため、ファイルとファイル グループはデータの配置を可能にします。 これにより、特定のテーブルのすべてのファイル I/O を特定のディスクに転送できるため、パフォーマンスが向上します。 たとえば、使用頻度の高いテーブルは、1 つのディスク上にあるファイル グループ内のファイルに配置できます。また、データベース内のアクセスが少ない他のテーブルは、2 番目のディスクにある別のファイル グループ内の別のファイルに配置できます。

ファイル I/O のボトルネックについては、「 データベース層のボトルネック」で詳しく説明されています。 ファイル I/O (ディスク I/O) がボトルネックであるという最も一般的なインジケーターは、"物理ディスク:平均ディスク キュー長" カウンターの値です。 "物理ディスク:平均ディスク キューの長さ" カウンターの値が、SQL Serverを実行しているコンピューター上の特定のディスクに対して約 3 を超えると、ファイル I/O がボトルネックになる可能性があります。

ファイルまたはファイル グループの最適化を適用してもファイル I/O ボトルネックの問題が解決しない場合は、物理ドライブまたは SAN ドライブを追加してディスク サブシステムのスループットを向上させる必要がある場合があります。

このトピックでは、ファイルとファイル グループの最適化を手動で適用する方法について説明しますが、これらの最適化はスクリプト化することもできます。 サンプル SQL スクリプトは、BizTalk Server MessageBox データベース ファイル グループ SQL スクリプトで提供されています。

Note

このスクリプトは、特定のBizTalk Server ソリューションのSQL Server データベースで使用されるファイル、ファイル グループ、およびディスク構成に合わせて変更する必要があることに注意してください。

既定のBizTalk Server構成で作成されたデータベース

BizTalk Serverの構成時に有効になっている機能に応じて、SQL Serverで最大 13 個の異なるデータベースが作成され、これらのデータベースはすべて既定のファイル グループに作成されます。 ALTER DATABASE コマンドを使用して既定のファイル グループを変更しない限り、SQL Serverの既定のファイル グループは PRIMARY ファイル グループです。 次の表に、BizTalk Serverの構成時にすべての機能が有効になっている場合にSQL Serverで作成されるデータベースの一覧を示します。

BizTalk Server データベース

データベース 既定のデータベース名 説明
構成データベース BizTalkMgmtDb BizTalk Server グループ内のBizTalk Serverのすべてのインスタンスの中央メタ情報ストア。
BizTalk MessageBox データベース BizTalkMsgBoxDb サブスクリプション述語を格納します。 これはホスト プラットフォームであり、各BizTalk Server ホストのキューと状態テーブルを保持します。 また、メッセージ ボックス データベースには、メッセージおよびメッセージ プロパティが格納されます。
BizTalk 追跡データベース BizTalkDTADb BizTalk Server追跡エンジンによって追跡されるビジネスおよび正常性の監視データを格納します。
BAM 分析データベース BAMAnalysis ビジネス アクティビティの集計履歴データを保持するデータベースをSQL Server Analysis Servicesします。
BAM スター スキーマ データベース BAMStarSchema OLAP 処理のビジネス アクティビティ監視から収集されたデータを変換します。 BAM 分析データベースを使用する場合は、このデータベースが必要です。
BAM プライマリ インポート データベース BAMPrimaryImport ビジネス アクティビティのイベントを格納し、アクティビティ インスタンスの後に進行状況とデータを照会します。 このデータベースでは、リアルタイム集計も実行されます。
BAM アーカイブ データベース BAMArchive サブスクリプション述語を格納します。 BAM アーカイブ データベースは、BAM プライマリ インポート データベース内のビジネス アクティビティ データの蓄積を最小限に抑えます。
SSO データベース SSODB 受信場所の構成情報を安全に格納します。 SSO 関連アプリケーションの情報と、暗号化されたユーザー資格情報をすべての関連アプリケーションに格納します。
ルール エンジン データベース BizTalkRuleEngineDb リポジトリ:

- 関連するルールのセットであるポリシー。
- ボキャブラリ。ルール内のデータ参照に対して、わかりやすいドメイン固有の名前のコレクションです。
ヒューマン ワークフロー サービス管理データベース BizTalkHwsDb BizTalk Human Workflow Services に必要な管理情報を格納します。
取引先管理データベース TPM ビジネス アクティビティ サービス (BAS) の取引先データを格納します。
Analysis Server 管理データベースの追跡 BizTalkAnalysisDb ビジネスと正常性の両方の監視 OLAP キューブを格納します。

データ ファイルとログ ファイルの分離

前述のように、既定のBizTalk Server構成では、メッセージ ボックス データベースが既定のファイル グループ内の 1 つのファイルに配置されます。 既定では、MessageBox データベースのデータ ログとトランザクション ログは、同じドライブとパスに配置されます。 これは、1 つのディスクを持つシステムに対応するために行われます。 運用環境では、1 つのファイル/ファイル グループ/ディスク構成が 最適ではありません 。 パフォーマンスを最適化するために、データ ファイルとログ ファイルを別のディスクに配置する必要があります。

Note

ログ ファイルはファイル グループに含まれることはありません。 ログ領域はデータ領域とは別に管理されます。

BizTalk Server データベースを配布する 80/20 ルール

ディスク I/O の競合またはデータベースの競合により、ほとんどのBizTalk Server ソリューションで競合のメインソースは、BizTalk Server MessageBox データベースです。 これは、単一メッセージ ボックスシナリオとマルチメッセージ ボックス シナリオの両方で当てはまります。 BizTalk データベースを配布する価値の 80% は、MessageBox データ ファイルとログ ファイルの最適化から派生すると仮定するのが妥当です。 以下で詳しく説明するサンプル シナリオでは、MessageBox データベースのデータ ファイルの最適化に重点を置きます。 その後、必要に応じて他のデータベースに対してこれらの手順に従うことができます。 たとえば、ソリューションで広範な追跡が必要な場合は、Tracking データベースを最適化することもできます。

MessageBox データベースにファイルを手動で追加する(ステップ バイ ステップ)

トピックのこのセクションでは、MessageBox データベースにファイルを手動で追加するための手順について説明します。 この例では、3 つのファイル グループが追加され、各ファイル グループにファイルが追加され、MessageBox のファイルが複数のディスクに分散されます。

SQL Serverの MessageBox データベースにファイルを手動で追加する

  1. SQL Server Management Studioを開き、[サーバーへの接続] ダイアログ ボックスを表示します。

    SQL Server ログイン画面

  2. [サーバーへの接続] ダイアログ ボックスの [サーバー名] 編集ボックスに、BizTalk Server MessageBox データベースを格納するSQL Server インスタンスの名前を入力し、[接続] をクリックしてSQL Server Management Studioを表示します。 SQL Server Management Studioの [オブジェクト エクスプローラー] ペインで、[データベース] を展開して、SQL Serverのこのインスタンスのデータベースを表示します。

    SQL Server 2005 Management Studio,オブジェクト エクスプローラー

  3. ファイルを追加するデータベースを右クリックし、[ プロパティ ] をクリックしてデータベースの [ データベースのプロパティ ] ダイアログ ボックスを表示します。

    SQL Server 2005 データベースのプロパティ ダイアログ ボックス

  4. [ データベースのプロパティ ] ダイアログ ボックスで、[ ファイル グループ ] ページを選択します。 BizTalkMsgBoxDb データベースの追加のファイル グループを作成するには、[ 追加 ] をクリックします。 次の例では、3 つのファイル グループが追加されています。

    SQL Server 2005、データベース へのファイル グループの追加

  5. [データベースのプロパティ] ダイアログ ボックスで、 [ファイル] ページをクリックします。

    ファイル グループに追加する追加のファイルを作成するには、[ 追加 ] をクリックし、[ OK] をクリックします。 MessageBox データベースが複数のディスクに分散されるようになりました。これにより、1 つのディスク構成よりもパフォーマンスに大きな利点がもたらされます。

    次の例では、前に作成した各ファイル グループに対してファイルが作成され、各ファイルが別のディスクに配置されます。

    SQL Server 2005、ファイル グループ にファイルを追加する

BizTalk MessageBox データベースにファイル グループとファイルを追加するためのサンプル SQL スクリプト

このガイドには、BizTalk Server MessageBox データベースにファイル グループとファイルを追加するための SQL スクリプトが含まれています。

Note

SQL Serverはログ ファイルに順番に書き込むため、SQL Server データベースに対して複数のログ ファイルを作成することで実現されるパフォーマンス上の利点はありません。

このスクリプトを実行するには、次の手順に従います。

  1. SQL Server Management Studioを開き、[サーバーへの接続] ダイアログ ボックスを表示します。

  2. [サーバーへの接続] ダイアログ ボックスの [サーバー名] 編集ボックスに、BizTalk Server MessageBox データベースを格納するSQL Server インスタンスの名前を入力し、[接続] をクリックして [SQL Server Management Studio] ダイアログ ボックスを表示します。

  3. SQL Server Management Studioで、[ファイル] メニューの [新規] をポイントし、[現在の接続でクエリ] をクリックして SQL クエリ エディターを開始します。

  4. サンプル スクリプトを BizTalk Server MessageBox Database Filegroups SQL Script から クエリ エディター にコピーします。

  5. BizTalk Server環境に合わせてスクリプト内のパラメーターを編集し、スクリプトを実行します。

    スクリプト作成の利点は、スクリプトで複数のタスクをすばやく実行し、正確に再現し、人的エラーの可能性を減らすことです。 スクリプト作成の欠点は、正しく記述されていないスクリプトを実行すると、BizTalk Server データベースをゼロから再構成する必要がある重大な問題を引き起こす可能性があることです。

重要

運用環境で実行する前に、このガイドのサンプル スクリプトなどの SQL スクリプトを徹底的にテストすることが最も重要です。

参照

データベース パフォーマンスの最適化