ファイルの入出力 (I/O) の競合は、多くの場合、運用環境の BizTalk Server 環境での制限要因 (ボトルネック) です。 BizTalk Server はデータベースを集中的に使用するアプリケーションであり、BizTalk Server で使用される SQL Server データベースは非常にファイル I/O を集中的に使用します。
このトピックでは、SQL Server のファイルとファイル グループの機能を最適に使用して、ファイル I/O 競合の発生を最小限に抑え、BizTalk Server ソリューションの全体的なパフォーマンスを向上させる方法について説明します。
概要
スループットが増加すると、すべての BizTalk Server ソリューションで最終的にファイル I/O の競合が発生します。 I/O サブシステム (ストレージ エンジン) は、リレーショナル データベースの主要なコンポーネントです。 通常、データベースの実装が成功するには、プロジェクトの初期段階で慎重に計画する必要があります。 この計画には、次の問題を考慮する必要があります。
RAID (独立ディスクの冗長アレイ) デバイスなど、使用するディスク ハードウェアの種類。
ファイルとファイル グループを使用してディスク上のデータをアソートする方法。 SQL Server でのファイルとファイル グループの使用の詳細については、「 データベース ファイルとファイル グループ」を参照してください。
データにアクセスするときのパフォーマンスを向上させるために最適なインデックス設計を実装する。 インデックスの設計の詳細については、「インデックスの 設計」を参照してください。
最適なパフォーマンスを得るために SQL Server 構成パラメーターを設定する方法。 SQL Server の最適な構成パラメーターの設定の詳細については、「 サーバー構成オプション」を参照してください。
BizTalk Server の主な設計目標の 1 つは、メッセージが失 われないように することです。 メッセージが失われる可能性を軽減するために、メッセージが処理されるときに、メッセージが MessageBox データベースに頻繁に書き込まれます。 メッセージがオーケストレーションによって処理されると、メッセージはオーケストレーション内のすべての永続化ポイントで MessageBox データベースに書き込まれます。 これらの永続化ポイントにより、MessageBox はメッセージと関連する状態を物理ディスクに書き込みます。 スループットが高い場合、この永続化によってディスクで大きな競合が発生し、ボトルネックとなる可能性があります。
SQL Server のファイルとファイル グループの機能を最適に使用して、ファイル IO のボトルネックに効果的に対処し、BizTalk Server ソリューションの全体的なパフォーマンスを向上することが示されています。 この最適化は、すべての BizTalk Server データベースが適切にバックアップされた後にのみ、経験豊富な SQL Server データベース管理者が行う必要があります。 この最適化は、BizTalk Server 環境のすべての SQL Server コンピューターで実行する必要があります。
SQL Server ファイルとファイル グループを使用すると、複数のディスク、複数のディスク コントローラー、または RAID (独立したディスクの冗長アレイ) システム間でデータベースを作成できるため、データベースのパフォーマンスを向上させることができます。 たとえば、コンピューターに 4 つのディスクがある場合は、3 つのデータ ファイルと 1 つのログ ファイルで構成され、各ディスクに 1 つのファイルを含むデータベースを作成できます。 データにアクセスすると、4 つの読み取り/書き込みヘッドが同時にデータに並列でアクセスできます。 これにより、データベース操作が大幅に高速化されます。 SQL Server ディスクのハードウェア ソリューションの実装の詳細については、SQL Server オンライン ブックの「データベース パフォーマンス」を参照 https://go.microsoft.com/fwlink/?LinkID=71419。
さらに、特定のファイル グループにテーブルを作成できるため、ファイルとファイル グループを使用してデータを配置できます。 これにより、特定のテーブルのすべてのファイル I/O を特定のディスクに転送できるため、パフォーマンスが向上します。 たとえば、使用頻度の高いテーブルは、1 つのディスク上にあるファイル グループ内のファイルに配置でき、データベース内のアクセス量の少ない他のテーブルは、2 番目のディスクにある別のファイル グループ内の別のファイルに配置できます。
ファイル IO のボトルネックについては、 データベース層のボトルネックについて詳しく説明します。 ファイル I/O (ディスク I/O) がボトルネックであることを示す最も一般的なインジケーターは、"物理ディスク:平均ディスク キューの長さ" カウンターの値です。 "物理ディスク:平均ディスク キュー長" カウンターの値が、任意の SQL Server 上の特定のディスクに対して約 3 を超える場合、ファイル I/O はボトルネックである可能性があります。
ファイルまたはファイル グループの最適化を適用してもファイル I/O のボトルネックの問題が解決しない場合は、物理ドライブまたは SAN ドライブを追加してディスク サブシステムのスループットを向上させる必要がある場合があります。
このトピックでは、ファイルとファイル グループの最適化を手動で適用する方法について説明しますが、これらの最適化はスクリプト化することもできます。 このトピックの最後には、サンプル SQL スクリプトが用意されています。 このスクリプトは、特定の BizTalk Server ソリューションに対して SQL Server データベースによって使用されるファイル、ファイル グループ、およびディスク構成に対応するように変更する必要があることに注意してください。
既定の BizTalk Server 構成で作成されたデータベース
BizTalk Server の構成時に有効になっている機能に応じて、最大 13 個の異なるデータベースが SQL Server に作成され、これらのデータベースはすべて既定のファイル グループに作成されます。 ALTER DATABASE コマンドを使用して既定のファイル グループを変更しない限り、SQL Server の既定のファイル グループは PRIMARY ファイル グループです。 次の表は、BizTalk Server を構成するときにすべての機能が有効になっている場合に SQL Server で作成されるデータベースの一覧です。
BizTalk Server データベース
データベース | 既定のデータベース名 | 説明 |
---|---|---|
構成データベース | BizTalkMgmtDb | BizTalk Server グループ内の BizTalk Server のすべてのインスタンスの中央メタ情報ストア。 |
BizTalk MessageBox データベース | BizTalkMsgBoxDb | サブスクリプション述語を格納します。 これはホスト プラットフォームであり、各 BizTalk Server ホストのキューと状態テーブルを保持します。 メッセージ ボックス データベースには、メッセージとメッセージのプロパティも格納されます。 |
BizTalk Tracking データベース | BizTalkDTADb | BizTalk Server 追跡エンジンによって追跡されるビジネスデータと正常性監視データを格納します。 |
BAM 分析データベース | BAMAnalysis | ビジネス アクティビティの集計履歴データを保持する SQL Server Analysis Services データベース。 |
BAM スター スキーマ データベース | BAMStarSchema | OLAP 処理のビジネス アクティビティ監視から収集されたデータを変換します。 BAM 分析データベースを使用する場合は、このデータベースが必要です。 |
BAM プライマリ インポート データベース | BAMPrimaryImport(BAMプライマリインポート) | ビジネス アクティビティからのイベントを格納し、アクティビティ インスタンスの後に進行状況とデータを照会します。 このデータベースでは、リアルタイム集計も実行されます。 |
BAM アーカイブ データベース | BAMArchive | サブスクリプション述語を格納します。 BAM アーカイブ データベースは、BAM プライマリ インポート データベース内のビジネス アクティビティ データの蓄積を最小限に抑えます。 |
SSO データベース | SSODB | 受信場所の構成情報を安全に格納します。 SSO 関連アプリケーションの情報と、暗号化されたユーザー資格情報をすべての関連アプリケーションに格納します。 |
ルール エンジン データベース | BizTalkRuleEngineDb | リポジトリ: - 関連するルールのセットであるポリシー。 - ボキャブラリ。ルール内のデータ参照に対して、わかりやすいドメイン固有の名前のコレクションです。 |
トラッキング分析サーバー管理データベース | BizTalkAnalysisDb | ビジネスとヘルスモニタリングの OLAP キューブの両方を格納します。 |
データ ファイルとログ ファイルの分離
前述のように、既定の BizTalk Server 構成では、メッセージ ボックス データベースが既定のファイル グループ内の 1 つのファイルに配置されます。 既定では、MessageBox データベースのデータとトランザクション ログは、同じドライブとパスに配置されます。 これは、1 つのディスクを持つシステムに対応するために行われます。 1 つのファイル/ファイル グループ/ディスク構成は、運用環境では 最適ではありません 。 パフォーマンスを最適化するために、データ ファイルとログ ファイルを別々のディスクに配置する必要があります。
注
ログ ファイルがファイル グループに含まれることはありません。 ログ領域は、データ領域とは別に管理されます。
BizTalk Server データベースを配布する 80/20 ルール
ディスク I/O の競合またはデータベースの競合が原因で発生するほとんどの BizTalk Server ソリューションの競合の主な原因は、BizTalk Server MessageBox データベースです。 これは、単一メッセージ ボックスシナリオとマルチメッセージ ボックス シナリオの両方で当てはまります。 BizTalk データベースを配布する価値の最大 80% は、MessageBox データ ファイルとログ ファイルの最適化から派生するものと想定するのが妥当です。 以下で詳しく説明するサンプル シナリオでは、MessageBox データベースのデータ ファイルの最適化に重点を置きます。 これらの手順は、必要に応じて他のデータベースに対して実行できます。たとえば、ソリューションで広範な追跡が必要な場合は、追跡データベースを最適化することもできます。
メッセージ ボックス データベースにファイルを手動で追加する(ステップ バイ ステップ)
このセクションでは、メッセージ ボックス データベースにファイルを手動で追加するために実行できる手順について説明します。 この例では、3 つのファイル グループを追加し、各ファイル グループにファイルを追加して、MessageBox のファイルを複数のディスクに分散します。
注
このガイドのパフォーマンス テストの目的上、ファイル グループは、BizTalk Server パフォーマンス最適化ガイドの一部として公開されるスクリプトを使用して最適化されました。 以下の手順は、参照目的でのみ提供されています。
SQL Server 上の MessageBox データベースにファイルを手動で追加する
SQL Server Management Studio を開き、[サーバーへの接続] ダイアログ ボックスを表示します。
[サーバーへの接続] ダイアログ ボックスの [サーバー名] フィールドに、BizTalk Server メッセージ ボックス データベースを格納する SQL Server インスタンスの名前を入力し、[接続] ボタンをクリックして Microsoft SQL Server Management Studio ダイアログ ボックスを表示します。
SQL Server Management Studio の [オブジェクト エクスプローラー ] ウィンドウで、[ データベース ] を展開して、この SQL Server インスタンスのデータベースを表示します。
ファイルを追加するデータベースを右クリックし、[ プロパティ ] をクリックしてデータベースの [ データベースのプロパティ ] ダイアログ ボックスを表示します。
[ データベースのプロパティ ] ダイアログ ボックスで、[ ファイル グループ ] ページを選択します。 [ 追加 ] ボタンをクリックして、BizTalkMsgBoxDb データベース用の追加のファイル グループを作成します。 次の例では、3 つのファイル グループが追加されています。
ファイル グループの追加
[ データベースのプロパティ ] ダイアログ ボックスで、[ ファイル ] ページを選択します。
[ 追加 ] ボタンをクリックして、ファイル グループに追加する追加のファイルを作成し、[ OK] をクリックします。 MessageBox データベースが複数のディスクに分散されるようになりました。これにより、1 つのディスク構成よりもパフォーマンスが大幅に向上します。
次の例では、前に作成したファイル グループごとにファイルが作成され、各ファイルが個別のディスクに配置されます。
へのファイルの追加
BizTalk MessageBox データベースにファイル グループとファイルを追加するためのサンプル SQL スクリプト
次のサンプル SQL スクリプトは、前のセクションで手動で完了したのと同じタスクを実行します。 このサンプル スクリプトでは、個別の論理ドライブ G から J が存在することを前提としています。このスクリプトは、各ファイル グループのファイル グループとファイルを作成し、ログ ファイルを J ドライブに配置します。
注
SQL Server はログ ファイルに順番に書き込むため、SQL Server データベースに対して複数のログ ファイルを作成することで実現されるパフォーマンス上の利点はありません。
-- Filegroup changes are made using the master database
USE [master]
GO
-- Script-wide declarations
DECLARE @CommandBuffer nvarchar(2048)
DECLARE @FG1_Path nvarchar(1024)
DECLARE @FG2_Path nvarchar(1024)
DECLARE @FG3_Path nvarchar(1024)
DECLARE @Log_Path nvarchar(1024)
-- Set the default path for all filegroups
SET @FG1_Path = N'G:\BizTalkMsgBoxDATA\'
SET @FG2_Path = N'H:\BizTalkMsgBoxDATA\'
SET @FG3_Path = N'I:\BizTalkMsgBoxDATA\'
SET @Log_Path = N'J:\BizTalkMsgBoxLog\'
ALTER DATABASE [BizTalkMsgBoxDb] ADD FILEGROUP [BTS_MsgBox_FG1]
SET @CommandBuffer = N'ALTER DATABASE [BizTalkMsgBoxDb] ADD FILE ( NAME = N''BizTalkMsgBoxDb_FG1'', FILENAME = N''' + @FG1_Path +
N'BizTalkMsgBoxDb_FG1.ndf'' , SIZE = 102400KB , MAXSIZE = UNLIMITED, FILEGROWTH = 10240KB ) TO FILEGROUP [BTS_MsgBox_FG1]'
EXECUTE (@CommandBuffer)
ALTER DATABASE [BizTalkMsgBoxDb] ADD FILEGROUP [BTS_MsgBox_FG2]
SET @CommandBuffer = N'ALTER DATABASE [BizTalkMsgBoxDb] ADD FILE ( NAME = N''BizTalkMsgBoxDb_FG1'', FILENAME = N''' + @FG2_Path +
N'BizTalkMsgBoxDb_FG2.ndf'' , SIZE = 102400KB , MAXSIZE = UNLIMITED, FILEGROWTH = 10240KB ) TO FILEGROUP [BTS_MsgBox_FG2]'
EXECUTE (@CommandBuffer)
ALTER DATABASE [BizTalkMsgBoxDb] ADD FILEGROUP [BTS_MsgBox_FG3]
SET @CommandBuffer = N'ALTER DATABASE [BizTalkMsgBoxDb] ADD FILE ( NAME = N''BizTalkMsgBoxDb_FG1'', FILENAME = N''' + @FG3_Path +
N'BizTalkMsgBoxDb_FG3.ndf'' , SIZE = 102400KB , MAXSIZE = UNLIMITED, FILEGROWTH = 10240KB ) TO FILEGROUP [BTS_MsgBox_FG3]'
EXECUTE (@CommandBuffer)
ALTER DATABASE [BizTalkMsgBoxDb] MODIFY FILE ( NAME = N'BizTalkMsgBoxDb_log', SIZE = 10240KB , MAXSIZE = UNLIMITED, FILEGROWTH = 10240KB )
GO -- Completes the previous batch, as necessary
次のサンプル SQL スクリプトを使用して、特定のファイル グループを既定のファイル グループとして設定できます。
USE [BizTalkMsgBoxDb]
GO
declare @isdefault bit
SELECT @isdefault=convert(bit, (status & 0x10)) FROM sysfilegroups WHERE groupname=N'BTS_MsgBox_FG1'
if(@isdefault=0)
ALTER DATABASE [BizTalkMsgBoxDb] MODIFY FILEGROUP [BTS_MsgBox_FG1] DEFAULT
GO
スクリプト作成の利点は、スクリプトで複数のタスクをすばやく実行し、正確に再現でき、人為的ミスの可能性を減らすことです。 スクリプト作成の欠点は、正しく記述されていないスクリプトを実行すると、BizTalk Server データベースを最初から再構成する必要がある重大な問題を引き起こす可能性があることです。 そのため、運用環境で実行する前に、このトピックに記載されているサンプル スクリプトなどの SQL スクリプトを十分にテストすることが最も重要です。