次の方法で共有


Synapse SQL リソースの使用量

この記事では、Synapse SQL のリソース消費モデルについて説明します。

サーバーレス SQL プール

サーバーレス SQL プールは、適切なサイズを選択する必要がないクエリ サービスごとの支払いです。 システムは要件に基づいて自動的に調整されるため、インフラストラクチャの管理やソリューションに適したサイズを選択する作業から解放されます。

専用 SQL プール - Data Warehouse ユニット (DWU) とコンピューティング データ ウェアハウス ユニット (cDWU)

価格とパフォーマンスを最適化するためのデータ ウェアハウス ユニット (DWU) の理想的な数の選択と、ユニット数の変更方法に関する推奨事項。

Data Warehouse ユニット

Synapse SQL プールは、プロビジョニングされている分析リソースのコレクションを表します。 分析リソースは、CPU、メモリ、IO の組み合わせとして定義されます。 これら 3 つのリソースは、Data Warehouse ユニット (DWU) と呼ばれるコンピューティング スケールの単位にバンドルされます。 DWU は、コンピューティング リソースとパフォーマンスの抽象的な正規化されたメジャーを表します。 サービス レベルを変更すると、システムで使用できる DWU の数が変更されます。 さらに、この変更により、システムのパフォーマンスとコストが調整されます。

パフォーマンスを向上させるために、データ ウェアハウス ユニットの数を増やすことができます。 パフォーマンスを低下させるには、データ ウェアハウスユニットを減らします。 ストレージ コストとコンピューティング コストは個別に課金されるため、データ ウェアハウス ユニットの変更はストレージ コストには影響しません。

データ ウェアハウス ユニットのパフォーマンスは、次のデータ ウェアハウス ワークロード メトリックに基づいています。

  • 標準データ ウェアハウス クエリで大量の行をスキャンし、複雑な集計を実行できる速度。 この操作は I/O と CPU を集中的に使用します。
  • データ ウェアハウスが Azure Storage BLOB または Azure Data Lake からデータを取り込むことができる速度。 この操作は、ネットワークと CPU を集中的に使用します。
  • CREATE TABLE AS SELECT T-SQL コマンドでテーブルをコピーできる速度。 この操作では、ストレージからデータを読み取り、アプライアンスのノードに分散し、ストレージに書き込み直します。 この操作は、CPU、IO、およびネットワーク集中型です。

DWU の増加:

  • スキャン、集計、CTAS ステートメントのシステムのパフォーマンスを直線的に変更する
  • PolyBase の読み込み操作のリーダーとライターの数を増やします
  • 同時実行クエリとコンカレンシー スロットの最大数を増やします。

サービスレベル目標

サービス レベル目標 (SLO) は、データ ウェアハウスのコストとパフォーマンス のレベルを決定するスケーラビリティ設定です。 Gen2 のサービス レベルは、コンピューティング データ ウェアハウス ユニット (cDWU) (DW2000c など) で測定されます。 Gen1 サービス レベルは DWU (DW2000 など) で測定されます。

サービス レベル目標 (SLO) は、データ ウェアハウスのコストとパフォーマンス のレベルを決定するスケーラビリティ設定です。 Gen2 専用 SQL プールのサービス レベルは、データ ウェアハウス ユニット (DWU) (DW2000c など) で測定されます。

Azure Synapse Analytics Gen2 では最近、100 cDWU という低いコンピューティング レベルをサポートするスケール機能が追加されました。 現在、下位のコンピューティング レベルを必要とする Gen1 上の既存のデータ ウェアハウスは、現在追加コストなしで利用できるリージョンの Gen2 にアップグレードできるようになりました。 お使いのリージョンがまだサポートされていない場合でも、サポートされているリージョンにアップグレードできます。 詳細については、Gen2 へのアップグレードに関するページを参照してください。

T-SQL では、SERVICE_OBJECTIVE設定によって、専用 SQL プールのサービス レベルとパフォーマンス レベルが決まります。

CREATE DATABASE mySQLDW
(Edition = 'Datawarehouse'
 ,SERVICE_OBJECTIVE = 'DW1000c'
)
;

パフォーマンスティアとデータウェアハウスユニット

各パフォーマンス レベルでは、データ ウェアハウス ユニットに対して少し異なる測定単位が使用されます。 この違いは、スケールの単位が課金に直接変換されるため、請求書に反映されます。

  • Gen1 データ ウェアハウスは、Data Warehouse ユニット (DWU) で測定されます。
  • Gen2 データ ウェアハウスは、コンピューティング データ ウェアハウス ユニット (cDWU) で測定されます。

DWU と cDWU はどちらも、コンピューティングのスケールアップまたはスケールダウンをサポートし、データ ウェアハウスを使用する必要がない場合はコンピューティングを一時停止します。 これらの操作はすべてオンデマンドです。 Gen2 は、パフォーマンスを向上させるために、コンピューティング ノード上のローカル ディスク ベースのキャッシュを使用します。 システムをスケーリングまたは一時停止すると、キャッシュが無効になるため、最適なパフォーマンスが得られる前にキャッシュのウォーム化の期間が必要になります。

データ ウェアハウスユニットを増やすと、コンピューティング リソースが直線的に増加します。 Gen2 は、最高のクエリ パフォーマンスと最高のスケールを提供します。 Gen2 システムもキャッシュを最大限に活用します。

容量制限

各 SQL サーバー (myserver.database.windows.net など) には、特定の数のデータ ウェアハウス ユニットを許可する データベース トランザクション ユニット (DTU) クォータがあります。 詳細については、 ワークロード管理の容量制限を参照してください。

必要なデータ ウェアハウス ユニットの数を評価する

データ ウェアハウス ユニットの理想的な数は、ワークロードと、システムに読み込んだデータの量によって大きく異なります。

ワークロードに最適な DWU を見つけるための手順:

  1. まず、小さい DWU を選択します。
  2. システムへのデータ読み込みをテストするときにアプリケーションのパフォーマンスを監視し、選択した DWU の数を観察し、観察したパフォーマンスと比較します。
  3. ピーク アクティビティの定期的な期間に関する追加の要件を特定します。 活動に大きな変動があるワークロードは、頻繁にスケーリングする必要がある場合があります。

SQL プールは、膨大な量のコンピューティングとクエリの大量のデータをプロビジョニングできるスケールアウト システムです。 スケーリングの真の機能 (特に大規模な DWU) を確認するには、スケーリング時にデータ セットをスケーリングして、CPU にフィードするのに十分なデータがあることを確認することをお勧めします。 スケール テストでは、少なくとも 1 TB を使用することをお勧めします。

クエリのパフォーマンスは、作業をコンピューティング ノード間で分割できる場合に限り、並列処理が増えるにつれて増加します。 スケーリングによってパフォーマンスが変わっていない場合は、テーブルの設計やクエリの調整が必要になる場合があります。 クエリチューニングのガイダンスについては、「 ユーザー クエリの管理」を参照してください。

権限

データ ウェアハウス ユニットを変更するには、 ALTER DATABASE で説明されているアクセス許可が必要です。

SQL DB 共同作成者や SQL Server 共同作成者などの Azure 組み込みロールは、DWU 設定を変更できます。

現在の DWU 設定を表示する

現在の DWU 設定を表示するには:

  1. Visual Studio で SQL Server オブジェクト エクスプローラーを開きます。
  2. 論理 SQL サーバーに関連付けられているマスター データベースに接続します。
  3. sys.database_service_objectives動的管理ビューから選択します。 次に例を示します。
SELECT  db.name [Database]
,        ds.edition [Edition]
,        ds.service_objective [Service Objective]
FROM    sys.database_service_objectives   AS ds
JOIN    sys.databases                     AS db ON ds.database_id = db.database_id
;

データ ウェアハウスユニットの変更

Azure Portal

DWU を変更するには:

  1. Azure portal を開き、データベースを開き、[スケール] を選択します。

  2. [ スケール] で、スライダーを左または右に移動して DWU 設定を変更します。

  3. 保存 を選択します。 確認メッセージが表示されます。 [ はい ] を選択して確定するか 、[いいえ ] を選択して取り消します。

PowerShell

Azure Az PowerShell モジュールを使用して Azure と対話することをお勧めします。 作業を始めるには、「Azure PowerShell をインストールする」を参照してください。 Az PowerShell モジュールへの移行方法については、Migrate Azure PowerShell from AzureRM to Az を参照してください。

DWU を変更するには、 Set-AzSqlDatabase PowerShell コマンドレットを使用します。 次の例では、サーバー MyServer でホストされているデータベース MySQLDW のサービス レベル目標を DW1000 に設定します。

Set-AzSqlDatabase -DatabaseName "MySQLDW" -ServerName "MyServer" -RequestedServiceObjectiveName "DW1000c"

詳細については、Azure Synapse Analytics の PowerShell コマンドレットに関するページを参照してください。

T-SQL

T-SQL を使用すると、現在の DWUsettings を表示し、設定を変更して、進行状況を確認できます。

DWU を変更するには:

  1. サーバーに関連付けられているマスター データベースに接続します。
  2. ALTER DATABASE TSQL ステートメントを使用します。 次の例では、MySQLDW データベースのサービス レベル目標を DW1000c に設定します。
ALTER DATABASE MySQLDW
MODIFY (SERVICE_OBJECTIVE = 'DW1000c')
;

REST API

DWU を変更するには、データベースの 作成または更新 REST API を使用します。 次の例では、サーバー MyServer でホストされているデータベース MySQLDW のサービス レベル目標を DW1000c に設定します。 サーバーは、ResourceGroup1 という名前の Azure リソース グループ内にあります。

PUT https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Sql/servers/{server-name}/databases/{database-name}?api-version=2014-04-01-preview HTTP/1.1
Content-Type: application/json; charset=UTF-8

{
    "properties": {
        "requestedServiceObjectiveName": DW1000
    }
}

その他の REST API の例については、 Azure Synapse Analytics の REST API に関するページを参照してください。

DWU 変更の状態を確認する

DWU の変更が完了するまでに数分かかる場合があります。 自動的にスケーリングする場合は、別のアクションに進む前に、特定の操作が完了していることを確認するロジックを実装することを検討してください。

さまざまなエンドポイントを介してデータベースの状態を確認すると、自動化を正しく実装できます。 ポータルでは、操作とデータベースの現在の状態の完了時に通知が提供されますが、プログラムによる状態のチェックは許可されません。

Azure portal では、データベースの状態でスケールアウト操作を確認することはできません。

DWU の変更の状態を確認するには:

  1. サーバーに関連付けられているマスター データベースに接続します。
  2. 次のクエリを送信して、データベースの状態を確認します。
SELECT    *
FROM      sys.databases
;
  1. 次のクエリを送信して操作の状態を確認する
SELECT    *
FROM      sys.dm_operation_status
WHERE     resource_type_desc = 'Database'
AND       major_resource_id = 'MySQLDW'
;

この DMV は、操作や操作の状態 (IN_PROGRESSまたは COMPLETED) など、専用 SQL プールに対するさまざまな管理操作に関する情報を返します。

スケーリング ワークフロー

スケール操作を開始すると、システムは最初にすべての開いているセッションを強制終了し、開いているトランザクションをロールバックして一貫性のある状態を確保します。 スケール操作の場合、スケーリングは、このトランザクション ロールバックが完了した後にのみ行われます。

  • スケールアップ操作の場合、システムはすべてのコンピューティング ノードをデタッチし、追加のコンピューティング ノードをプロビジョニングしてから、ストレージ レイヤーに再アタッチします。
  • スケールダウン操作の場合、システムはすべてのコンピューティング ノードをデタッチし、必要なノードのみをストレージ レイヤーに再アタッチします。

次のステップ

パフォーマンスの管理の詳細については、ワークロード管理とメモリとコンカレンシーの制限に関するリソース クラスに関するページを参照してください。