Azure Stack Hub で SQL Server のパフォーマンスを最適化するためのベスト プラクティス

この記事では、SQL Server を最適化し、Azure Stack Hub 仮想マシン (VM) のパフォーマンスを向上させるためのベスト プラクティスについて説明します。 Azure Stack Hub VM で SQL Server を実行する場合は、オンプレミス サーバー環境の SQL Server に適用できるのと同じデータベース パフォーマンス チューニング オプションを使用できます。 Azure Stack Hub クラウド内のリレーショナル データベースのパフォーマンスは、VM のファミリ サイズやデータ ディスクの構成などの多くの要因に左右されます。

SQL Server イメージを作成するときは、 Azure Stack Hub ポータルで VM をプロビジョニングすることを検討してください。 Azure Stack Hub 管理者ポータルの Marketplace 管理から SQL IaaS 拡張機能をダウンロードし、任意の SQL Server VM イメージをダウンロードします。 これらのイメージには、SQL Server 2016 SP1、SQL Server 2016 SP2、および SQL Server 2017 が含まれます。

Note

この記事では、グローバル Azure portal を使用して SQL Server VM をプロビジョニングする方法について説明しますが、ガイダンスは Azure Stack Hub にも適用されます。SSD はオペレーティング システム ディスクでは使用できません。ストレージ構成には若干の違いがあります。

VM イメージでは、SQL Server の場合、ライセンス持ち込み (BYOL) のみを使用できます。 Windows Server の場合、既定のライセンス モデルは従量課金制 (PAYG) です。 VM の Windows Server ライセンス モデルの詳細については、 Azure Stack Hub Marketplace の Windows Server に関する FAQ を参照してください。

この記事では、Azure Stack Hub VM 上の SQL Server のパフォーマンスを最大限に高める方法を取り上げます。 ワークロードの要求が厳しくない場合は、推奨される最適化がすべて必要になるわけではありません。 各推奨事項を評価するときに、パフォーマンスのニーズとワークロードのパターンを考慮してください。

Note

Azure VM の SQL Server のパフォーマンス ガイダンス については、次のガイドラインを参照してください

SQL Server のベスト プラクティスのチェックリスト

Azure Stack Hub VM で SQL Server の最適なパフォーマンスを実現するためのチェックリストを以下に示します。

面グラフ 最適化
VM サイズ DS3 以上 (SQL Server Enterprise Edition の場合)。

DS2 以上 (SQL Server Standard Edition および Web Edition の場合)。
Storage Premium Storage をサポートする VM ファミリを使用します。
ディスク 少なくとも 2 つのデータ ディスク (1 つはログ ファイル用、もう 1 つはデータ ファイルと TempDB 用) を使用し、容量のニーズに基づいてディスク サイズを選択します。 SQL Server のインストール中に、既定のデータ ファイルの場所をこれらのディスクに設定します。

データベース ストレージまたはログに、オペレーティング システム ディスクまたは一時ディスクを使用することは避けます。
複数の Azure データ ディスクをストライプし、記憶域スペースを使用して IO スループットを向上させます。

ドキュメントに記載されている割り当てサイズでフォーマットします。
I/O データ ファイルの瞬時初期化を有効にします。

比較的小さな固定インクリメント (64 ~ 256 MB) でデータベースの自動拡張を制限します。

データベースの自動圧縮を無効にします。

オペレーティング システム ディスクではなく、データ ディスク上に既定のバックアップおよびデータベース ファイルの場所を設定します。

ロックされたページを有効にします。

SQL Server サービス パックと累積的な更新プログラムを適用します。
機能固有 Blob ストレージに直接バックアップします (使用している SQL Server のバージョンでサポートされている場合)。

これらの最適化を行う方法と理由の詳細については、次のセクションで提供される詳細とガイダンスを確認してください。

VM サイズのガイダンス

パフォーマンス重視のアプリケーションでは、次の VM サイズをお勧めします。

  • SQL Server Enterprise エディション: DS3 以降。
  • SQL Server Standard エディションと Web エディション: DS2 以降。

Azure Stack Hub の場合、DS と DS_v2 の VM ファミリ シリーズの間にパフォーマンスの違いはありません。

ストレージのガイダンス

Azure Stack Hub の DS シリーズ (および DSv2 シリーズ) の VM では、オペレーティング システム ディスクおよびデータ ディスクの最大スループット (IOPS) が提供されます。 DS シリーズまたは DSv2 シリーズの VM では、選択したディスクの種類やサイズに関係なく、オペレーティング システム ディスク用に最大 1,000 IOPS、データ ディスクごとに最大 2,300 IOPS が提供されます。

データ ディスクのスループットは、VM のファミリ シリーズに基づいて一意に決定されます。 AZURE Stack Hub でサポートされている VM サイズを参照して、VM ファミリシリーズごとのデータ ディスク スループットを特定します。

Note

実稼働ワークロードの場合は、DS シリーズまたは DSv2 シリーズの VM を選択し、オペレーティング システム ディスクとデータ ディスク上で使用可能な最大 IOPS が提供されるようにします。

Azure Stack Hub でストレージ アカウントを作成する場合、この機能は Azure Stack Hub では使用できないため、geo レプリケーション オプションは無効です。

ディスクのガイダンス

Azure Stack Hub VM には、次の 3 種類のメイン ディスクがあります。

  • オペレーティング システム ディスク: Azure Stack Hub VM を作成すると、プラットフォームはオペレーティング システム ディスクの VM に少なくとも 1 つのディスク ( C ドライブとしてラベル付け) を接続します。 このディスクは、ページ BLOB としてストレージに格納されている VHD です。
  • 一時ディスク: Azure Stack Hub VM には、一時ディスク ( D ドライブとしてラベル付け) と呼ばれる別のディスクが含まれています。 ノード上のディスクで、スクラッチ領域として使用できるものです。
  • データ ディスク: データ ディスクとして VM に追加のディスクを接続でき、これらのディスクはページ BLOB として格納されます。

次のセクションでは、これらの異なるディスクの使用に関する推奨事項について説明します。

オペレーティング システム ディスク

オペレーティング システム ディスクは、実行中のバージョンのオペレーティング システムとして起動およびマウントできる VHD であり、 C ドライブとしてラベル付けされます。

一時ディスク

D ドライブとしてラベル付けされている一時ストレージ ドライブは永続的ではありません。 失いたくないデータは、D ドライブに格納しないでください。 これには、ご使用のユーザー データベース ファイルとユーザー トランザクション ログ ファイルが含まれます。

各データ ディスクではデータ ディスクごとに最大 2,300 の IOPS が提供されるため、データ ディスクに TempDB を格納することをお勧めします。

データ ディスク

  • データ ファイルとログ ファイルにはデータ ディスクを使用します。 ディスク ストライピングを使用していない場合は、Premium Storage をサポートする VM の 2 つのデータ ディスクを使用します。1 つのディスクにはログ ファイルが含まれ、もう 1 つのディスクにはデータ ファイルと TempDB ファイルが含まれます。 各データ ディスクでは、VM ファミリに応じて、多くの IOPS が提供されます (「Azure Stack Hub でサポートされている VM のサイズ」を参照してください)。 記憶域スペースなどのディスク ストライピング手法を使用する場合は、すべてのデータ ファイルとログ ファイルを同じドライブ (TempDB を含む) に配置します。 この構成では、特定の時間にどのファイルで必要になるかに関係なく、SQL Server で最大数の IOPS を使用できます。

Note

SQL Server VM をポータルからプロビジョニングするとき、必要に応じてストレージの構成を編集することができます。 Azure Stack Hub では、実際の構成に応じて 1 つまたは複数のディスクが構成されます。 複数のディスクは、1 つの記憶域プールにまとめられます。 この構成では、データ ファイルとログ ファイルが一緒に格納されます。

  • ディスク ストライピング: スループットを向上させるには、データ ディスクを追加し、ディスク ストライピングを使用できます。 必要なデータ ディスク数を決定するには、ログ ファイルと、データおよび TempDB ファイルに必要な IOPS 数を分析します。 IOPS の制限は、VM のサイズではなく、VM シリーズ ファミリに基づくデータ ディスクあたりの制限であることに注意してください。 ただし、ネットワーク帯域幅の制限は、VM のサイズに基づきます。 詳細については、「Azure Stack Hub でサポートされている仮想マシンのサイズ」に示されている表を参照してください。 次のガイドラインに従ってください。

  • Windows Server 2012 以降の場合は、次のガイドラインに従った記憶域スペースを使用します。

    • パーティションの配置不良を原因とするパフォーマンスの低下を回避するため、インターリーブ (ストライプ サイズ) をオンライン トランザクション処理 (OLTP) ワークロードに対しては 64 KB (65,536 バイト)、データ ウェアハウス ワークロードに対しては 256 KB (262,144 バイト) に設定します。 これは、PowerShell を使って設定する必要があります。

    • 列数を物理ディスクの数に設定します。 8 つを超えるディスクを構成する場合は、PowerShell を使用します (サーバー マネージャー UI ではない)。 たとえば、次の PowerShell コマンドでは、インターリーブ サイズが 64 KB に設定され、列数が 2 に設定された新しい記憶域プールが作成されます。

      $PoolCount = Get-PhysicalDisk -CanPool $True
      $PhysicalDisks = Get-PhysicalDisk | Where-Object {$_.FriendlyName -like "*2" -or $_.FriendlyName -like "*3"}
      
      New-StoragePool -FriendlyName "DataFiles" -StorageSubsystemFriendlyName "Storage Spaces*" -PhysicalDisks $PhysicalDisks | New-VirtualDisk -FriendlyName "DataFiles" -Interleave 65536 -NumberOfColumns 2 -ResiliencySettingName simple -UseMaximumSize |Initialize-Disk -PartitionStyle GPT -PassThru |New-Partition -AssignDriveLetter -UseMaximumSize |Format-Volume -FileSystem NTFS -NewFileSystemLabel "DataDisks" -AllocationUnitSize 65536 -Confirm:$false
      
  • 負荷予測に基づいて、ご使用の記憶域プールに関連付けるディスク数を決定します。 接続できるデータ ディスクの数は VM サイズによって異なることに注意してください。 詳細については、「Azure Stack Hub でサポートされている VM のサイズ」を参照してください。

  • データ ディスクの最大 IOPS を取得するには、 VM サイズでサポートされているデータ ディスクの最大数を追加し、ディスク ストライピングを使用することをお勧めします。

  • NTFS アロケーション ユニット サイズ: データ ディスクをフォーマットする場合は、データ ファイルとログ ファイルと TempDB に 64 KB のアロケーション ユニット サイズを使用することをお勧めします。

  • ディスク管理のプラクティス: データ ディスクを削除するときは、変更中に SQL Server サービスを停止します。 また、パフォーマンスが向上しないため、ディスク上のキャッシュ設定は変更しないでください。

警告

これらの操作中に SQL サービスを停止できないと、データベースが破損する可能性があります。

I/O のガイダンス

  • 初期ファイル割り当てに必要な時間を短縮するために、ファイルの瞬時初期化を有効にすることを検討します。 ファイルの瞬時初期化を利用するには、SQL Server (MSSQLSERVER) サービス アカウントに SE_MANAGE_VOLUME_NAME を付与し、[ボリュームの保守タスクを実行] セキュリティ ポリシーにそのサービス アカウントを追加します。 Azure の SQL Server プラットフォーム イメージを使用している場合、既定のサービス アカウント (NT Service\MSSQLSERVER) は、[ボリュームの保守タスクを実行] セキュリティ ポリシーに追加されません。 つまり、SQL Server Azure プラットフォーム イメージでは、ファイルの瞬時初期化は有効になりません。 [ボリュームの保守タスクを実行] セキュリティ ポリシーに SQL Server サービス アカウントを追加したら、SQL Server サービスを再起動します。 この機能を使用する場合は、セキュリティに関する考慮事項が考えられます。 詳細については、「 データベース ファイルの初期化」を参照してください。

  • 自動拡張 は予期しない成長の対策です。 自動拡張を使用して、データを管理したり、日々の増加をログに記録したりしないでください。 自動拡張を使用する場合は、[ サイズ] スイッチを使用してファイルを事前に拡張します。

  • パフォーマンスに悪影響を与える可能性のある不要なオーバーヘッドを回避するために、 自動圧縮 が無効になっていることを確認します。

  • 既定のバックアップとデータベース ファイルの場所を設定します。 この記事では、推奨事項を使用し、[サーバーのプロパティ] ウィンドウで変更を行います。 手順については、「 データ ファイルとログ ファイルの既定の場所を表示または変更する」を参照してください。 次のスクリーンショットは、これらの変更を行う場所を示しています。

    既定の場所を表示または変更する

  • ロックされたページを有効にして、IO とページング アクティビティを減らします。 詳細については、「 メモリ内のロック ページを有効にする」オプションを参照してください。

  • バックアップを含め、Azure Stack Hub の入出力を転送するときは、データ ファイルを圧縮することを検討してください。

機能固有のガイダンス

一部のデプロイでは、より高度な構成手法を使用してパフォーマンスの利点を実現できます。 次の一覧では、パフォーマンスの向上に役立つ SQL Server の機能の一部を示します。

  • Azure Storageにバックアップします。 Azure Stack Hub VM で実行されている SQL Server のバックアップを作成する場合は、SQL Server Backup to URL を使用できます。 SQL Server 2012 SP1 CU2 以降で使用できるこの機能は、接続されているデータ ディスクにバックアップする場合に推奨されます。

    Azure Storage を使用してバックアップまたは復元をする場合は、SQL Server のバックアップを URL に指定する際のベスト プラクティスとトラブルシューティングおよびMicrosoft Azure に格納されているバックアップからの復元に関する推奨事項に従ってください。 Azure VM の SQL Server の自動バックアップを使用して、これらのバックアップを自動化することもできます。

  • Azure Stack Hub ストレージにバックアップします。 Azure Storage へのバックアップと同様の方法で、Azure Stack Hub ストレージにバックアップできます。 SQL Server Management Studio (SSMS) 内にバックアップを作成する場合は、構成情報を手動で入力する必要があります。 SSMS を使用してストレージ コンテナーや Shared Access Signature を作成することはできません。 SSMS は、Azure Stack Hub サブスクリプションではなく、Azure サブスクリプションにのみ接続されます。 代わりに、Azure Stack Hub ポータルまたは PowerShell を使用して、ストレージ アカウント、コンテナー、Shared Access Signature を作成します。

    SQL Server のバックアップ

    Note

    Shared Access Signature は、Azure Stack Hub ポータルからの SAS トークンであり、文字列の先頭に '?' がありません。 ポータルからコピー関数を使用する場合は、SQL Server 内でトークンが機能する先頭の '?' を削除します。

    SQL Server でバックアップ先を設定して構成したら、Azure Stack Hub BLOB ストレージにバックアップできます。

次のステップ

Azure Stack Hub でのサービスの使用またはアプリの作成