パフォーマンスの高速化と調整

完了

Azure SQL のパフォーマンスを高速化し、調整するオプションを理解することは、さらに一貫したパフォーマンスを実現するために重要です。 これには、CPU 容量のスケーリング、I/O パフォーマンスの向上、メモリとワーカーの構成、アプリケーションの待機時間の短縮、SQL Server のチューニングの標準的なベストプラクティスの適用などの方法を理解することが含まれます。

CPU 容量のスケーリング

リソースのニーズに応じて CPU の数を増減することが必要になる場合があります。 オンプレミス環境では、これには VM の再構成、ハードウェアの変更、およびデータベースの移行も必要になることがあります。 Azure SQL を使用すると、ユーザー側で移行なくこれを行うことができます。 portal、T-SQL、Azure CLI、または REST API を使用して、デプロイの仮想コアの数を増減できます。

通常、ダウンタイムは必要ですが、移行のない Azure SQL Database では大幅に高速化できます。 ハイパースケール デプロイにより、データ サイズに関係なく一定の時間でスケールアップすることができ、サーバーレス デプロイにより、CPU の需要に基づいた自動スケーリングが可能になります。

Note

Azure SQL Managed Instance のスケーリングにはかなりの時間がかかりますが、移行は必要ありません。

I/O パフォーマンス

I/O パフォーマンスは、データベース アプリケーションにとってきわめて重要な場合があります。 Azure SQL により、物理的なファイルの配置はなくなりますが、必要な I/O パフォーマンスを確実に取得する方法があります。

1 秒あたりの入出力操作数 (IOPS) は、アプリケーションにとって重要な場合があります。 必ず IOPS のニーズに適したサービス レベルと仮想コアを選んでください。 Azure に移行する場合、オンプレミスのクエリの IOPS を測定する方法を理解します。 IOPS に制限がある場合、I/O 待機時間が長くなる可能性があります。 仮想コア購入モデルで十分な IOPS がない場合は、仮想コアをスケールアップすることや、Business Critical または Hyperscale に移行することができます。 運用環境ワークロードで DTU を使う場合は、Premium レベルに移行することをお勧めします。

I/O 待機時間は、I/O パフォーマンスにとってもう 1 つの重要なコンポーネントです。 Azure SQL Database の I/O 待機時間を短縮するには、Business Critical または Hyperscale を検討してください。 SQL Managed Instance の I/O 待機時間を短縮するには、Business Critical に移動するか、データベースのファイル サイズまたはファイル数を増加します。 トランザクション ログの待機時間を短縮するには、必要に応じて複数ステートメントのトランザクションを使います。

メモリまたはワーカーの増加

アプリケーションやデプロイでは、十分なメモリやワーカーが確保されていることが重要になる場合があります。 Azure SQL Database では、メモリの制限またはワーカーを増やすには仮想コアをスケールアップします。 SQL Managed Instance の場合、メモリの制限を増やすには仮想コアをスケールアップします。 現在、SQL Managed Instance では、"ワーカー スレッドの最大数" によるワーカー数の増加もサポートされています。

アプリケーションの待機時間の短縮

すべてのリソースのニーズに合わせてデプロイを構成した場合でも、アプリケーションで待機時間のパフォーマンスの問題が発生する可能性があります。 Azure SQL アプリケーションで、次のベスト プラクティスに従ってください。

  • プロキシではなくリダイレクト接続の種類を使用します。
  • ストアド プロシージャを使用するか、バッチなどの手法によってクエリのラウンド トリップ数を制限することで、"おしゃべりな" (通信量の多い) アプリケーションを最適化します。
  • シングルトン トランザクションではなく、トランザクションをグループ化することで、それらを最適化します。

SQL Server のように調整する

Azure SQL はそれでもやはり SQL Server です。 SQL Server クエリを調整し、次のことを確認するための代替手段はほとんどありません。

  • 適切なインデックス デザイン
  • バッチの使用
  • ストアド プロシージャの使用
  • キャッシュされた "アドホック" クエリが多くなりすぎないようにクエリをパラメーター化する
  • アプリケーションの結果をすばやく正確に処理する

次の演習では、最初の演習にあったパフォーマンスの問題を取り上げ、Azure SQL の CPU のスケーリングによってそれを改善します。