パフォーマンス機能
まず、Azure SQL のパフォーマンス機能のいくつかを SQL Server と比較して見てみましょう。
Azure SQL Database と Azure SQL Managed Instance は SQL Server データベース エンジンに基づいているため、SQL Server に付属する機能のほとんどは Azure SQL でも使用できます。 Azure SQL をデプロイして構成するときに考慮する必要がある、データベースのパフォーマンスに影響を与えるいくつかの機能があります。 これには、最大容量、インデックス、インメモリ OLTP、パーティション、SQL Server の機能強化、インテリジェント パフォーマンス機能が含まれます。
メモリ、CPU、I/O 容量
Azure SQL Database または SQL Managed Instance での適切なデプロイやサービス レベルの選択がパフォーマンスにとって重要になる場合があります。 2 番目のモジュールでは、Azure SQL のさまざまなデプロイ オプションについて学習しました。 デプロイの一部として、次の重要な最大容量を考慮してください。
- Azure SQL Database は、最大 128 個の仮想コア、4 TB のメモリ、4 TB のデータベース サイズをサポートできます。
- Hyperscale のデプロイ オプションでは、最大 100 TB のデータベース サイズがサポートされます。
- Azure SQL Managed Instance は、最大 80 個の仮想コア、400 GB のメモリ、8 TB のデータベース サイズをサポートできます。
- 仮想コアの数とサービス レベルも、トランザクション ログの最大速度、IOPS、I/O 待機時間、メモリなど、他のリソース容量に影響します。
- Windows ジョブ オブジェクトは、メモリなどの特定のリソース制限をサポートするために使用されます。 デプロイのための真の容量を見つけるには、sys.dm_os_job_object を使用します。
インデックス
インデックスは多くの場合、SQL Server と Azure SQL 両方のクエリ パフォーマンスにとって重要です。 インデックスと Azure SQL について考慮すべき重要な点を次に示します。
- すべてのインデックスの種類 (クラスター化と非クラスター化) が Azure SQL 全体でサポートされています。
- オンラインおよび再開可能なインデックスが完全にサポートされています。 オンラインおよび再開可能なインデックスが最大の可用性のために重要になる場合があります。
- 列ストア インデックスがほぼすべてのサービス レベルで使用できます。 例外については、ドキュメントを確認してください。
インメモリ OLTP
オンライン トランザクション処理 (OLTP) を特徴付ける重要な要素は、多数の同時実行トランザクションを含むデータをリアルタイムで読み書きするアプリケーションです。 インメモリ OLTP は、多数の同時実行ユーザーがデータを変更するアプリケーションなど、トランザクションの待機時間に影響されやすいアプリケーションのための機能です。 インメモリ OLTP と Azure SQL に関連する重要な点を次に示します。
- メモリ最適化テーブルは、Business Critical レベルでのみ使用できます。
- データベースが作成されると、Azure SQL Database と SQL Managed Instance ではメモリ最適化ファイルグループが事前に作成されます (General Purpose レベルの場合も)。
- メモリ最適化テーブルのメモリの量は、仮想コアに依存するメモリ制限の一定の割合です。
パーティション
SQL Server では、多数の行を含むテーブルに対し、テーブル内の列でデータを分割することによって、パフォーマンスを向上させるために、パーティションがよく使われます。 パーティションと Azure SQL では、次の点を考慮してください。
- パーティションは Azure SQL Database と SQL Managed Instance でサポートされています。
- SQL Managed Instance では、パーティションを設定したファイルグループのみ使用できます。
最近の SQL Server のパフォーマンス強化
インテリジェント クエリ処理 (IQP) など、SQL Server 2019 以降に導入されたパフォーマンス機能の多くは、Azure SQL Database と Azure SQL Managed Instance でも使用できます。 ただし、例外がいくつかあります。 たとえば、tempdb
メタデータの最適化は、Azure SQL ではまだ使用できません。 IQP 機能のサポートの明確な一覧については、「インテリジェントなクエリ処理の機能」を確認してください。
インテリジェント パフォーマンス
インテリジェント パフォーマンスは、インテリジェント クエリ処理、自動プラン修正、自動チューニング (インデックスを含む) などの Azure SQL の機能を対象としています。 これらの機能の詳細については、後のユニットで詳しく説明します。