Azure Synapse Analytics データ ウェアハウスでコンピューティングを管理するManage compute in Azure Synapse Analytics data warehouse

Azure Synapse Analytics SQL プールでコンピューティングを管理する方法について説明します。Learn about managing compute resources in Azure Synapse Analytics SQL pool. SQL プールを一時停止してコストを削減したり、パフォーマンス需要に応じてデータ ウェアハウスをスケーリングしたりします。Lower costs by pausing the SQL pool, or scale the data warehouse to meet performance demands.

コンピューティングの管理とはWhat is compute management?

データ ウェアハウスのアーキテクチャではストレージとコンピューティングが分離され、それぞれを個別にスケーリングすることができます。The architecture of data warehouse separates storage and compute, allowing each to scale independently. その結果、データ ストレージとは無関係に、パフォーマンス需要に応じてコンピューティングをスケーリングできます。As a result, you can scale compute to meet performance demands independent of data storage. コンピューティング リソースは、一時停止して再開することもできます。You can also pause and resume compute resources. このアーキテクチャでは、当然、コンピューティングとストレージに対する課金は別々に行われます。A natural consequence of this architecture is that billing for compute and storage is separate. データ ウェアハウスをしばらく使用する必要がない場合は、コンピューティングを一時停止して、コンピューティング コストを節約できます。If you don't need to use your data warehouse for a while, you can save compute costs by pausing compute.

コンピューティングのスケーリングScaling compute

コンピューティングをスケールアウトまたはスケールバックするには、SQL プールのデータ ウェアハウス ユニット設定を調整します。You can scale out or scale back compute by adjusting the data warehouse units setting for your SQL pool. データ ウェアハウス ユニットを追加していくと、読み込みとクエリのパフォーマンスが直線的に増加していきます。Loading and query performance can increase linearly as you add more data warehouse units.

スケールアウトの手順については、Azure PortalPowerShell、または T-SQL のクイックスタートに関する記事を参照してください。For scale-out steps, see the Azure portal, PowerShell, or T-SQL quickstarts. REST API を使用して、スケールアウト操作を実行することもできます。You can also perform scale-out operations with a REST API.

スケール操作を実行する場合、SQL プールは、最初にすべての受信クエリを中止し、次にトランザクションをロールバックして一貫性のある状態を確保します。To perform a scale operation, SQL pool first kills all incoming queries and then rolls back transactions to ensure a consistent state. スケーリングは、トランザクションのロールバックが完了して初めて実行されます。Scaling only occurs once the transaction rollback is complete. スケール操作では、コンピューティング ノードからストレージ レイヤーがデタッチされ、コンピューティング ノードが追加され、ストレージ レイヤーがコンピューティング レイヤーに再アタッチされます。For a scale operation, the system detaches the storage layer from the compute nodes, adds compute nodes, and then reattaches the storage layer to the Compute layer. 各 SQL プールは、60 のディストリビューションとして保存され、これがコンピューティング ノードに均等に分配されます。Each SQL pool is stored as 60 distributions, which are evenly distributed to the compute nodes. コンピューティング ノードを追加していくと、コンピューティング能力も向上していきます。Adding more compute nodes adds more compute power. コンピューティング ノードの数が増加すると、それにつれてコンピューティング ノードあたりのディストリビューションの数が減少し、クエリ用のコンピューティング能力がより多く得られます。As the number of compute nodes increases, the number of distributions per compute node decreases, providing more compute power for your queries. 同様に、データ ウェアハウス ユニットを減らすと、コンピューティング ノードの数が減少し、クエリ用のコンピューティング リソースが減ります。Likewise, decreasing data warehouse units reduces the number of compute nodes, which reduces the compute resources for queries.

次の表は、データ ウェアハウス ユニットが変化すると、コンピューティング ノードあたりのディストリビューションの数がどのように変化するかを示しています。The following table shows how the number of distributions per Compute node changes as the data warehouse units change. DW30000c は、60 のコンピューティング ノードを提供し、DW100c よりはるかに高いクエリ パフォーマンスを達成します。DW30000c provides 60 Compute nodes and achieves much higher query performance than DW100c.

データ ウェアハウス ユニットData warehouse units #コンピューティング ノードの数# of compute nodes #ノードあたりのディストリビューションの数# of distributions per node
DW100cDW100c 11 6060
DW200cDW200c 11 6060
DW300cDW300c 11 6060
DW400cDW400c 11 6060
DW500cDW500c 11 6060
DW1000cDW1000c 22 3030
DW1500cDW1500c 33 2020
DW2000cDW2000c 44 1515
DW2500cDW2500c 55 1212
DW3000cDW3000c 66 1010
DW5000cDW5000c 1010 66
DW6000cDW6000c 1212 55
DW7500cDW7500c 1515 44
DW10000cDW10000c 2020 33
DW15000cDW15000c 3030 22
DW30000cDW30000c 6060 11

データ ウェアハウス ユニットの適正サイズの確認Finding the right size of data warehouse units

スケールアウトのパフォーマンス上のメリット (特に、大規模なデータ ウェアハウス ユニットのスケールアウトのパフォーマンス上の メリット) を確認するには、少なくとも 1 TB のデータ セットを使用する必要があります。To see the performance benefits of scaling out, especially for larger data warehouse units, you want to use at least a 1-TB data set. SQL プールの最適なデータ ウェアハウス ユニット数を確認するには、スケールアップとスケールダウンを試します。To find the best number of data warehouse units for your SQL pool, try scaling up and down. データを読み込んだ後、さまざまなデータ ウェアハウス ユニット数でいくつかのクエリを実行します。Run a few queries with different numbers of data warehouse units after loading your data. スケーリングは簡単に行えるので、1 時間以内でさまざまなパフォーマンス レベルを試すことができます。Since scaling is quick, you can try various performance levels in an hour or less.

最適なデータ ウェアハウス ユニット数を確認する際の推奨事項を以下に示します。Recommendations for finding the best number of data warehouse units:

  • 開発中の SQL プールの場合は、少ない数のデータ ウェアハウス ユニットを選択することから始めます。For a SQL pool in development, begin by selecting a smaller number of data warehouse units. 手始めとしては、DW400c または DW200c が適しています。A good starting point is DW400c or DW200c.
  • アプリケーションのパフォーマンスを監視し、選択したデータ ウェアハウス ユニットの数に対するパフォーマンスの変化を観察します。Monitor your application performance, observing the number of data warehouse units selected compared to the performance you observe.
  • 線形スケールを想定し、データ ウェアハウス ユニットをどれだけ増減する必要があるかを確認します。Assume a linear scale, and determine how much you need to increase or decrease the data warehouse units.
  • ビジネス要件に応じた最適なパフォーマンス レベルに到達するまで調整を行います。Continue making adjustments until you reach an optimum performance level for your business requirements.

スケールアウトを実行するタイミングWhen to scale out

データ ウェアハウス ユニットをスケールアウトすると、次のパフォーマンスに影響があります。Scaling out data warehouse units impacts these aspects of performance:

  • スキャン、集計、CTAS ステートメントに関するシステムのパフォーマンスが直線的に向上します。Linearly improves performance of the system for scans, aggregations, and CTAS statements.
  • データ読み込み用のリーダーとライターの数が増えます。Increases the number of readers and writers for loading data.
  • コンカレント クエリとコンカレンシー スロットの最大数。Maximum number of concurrent queries and concurrency slots.

データ ウェアハウス ユニットをスケールアウトするタイミングについての推奨事項を以下に示します。Recommendations for when to scale out data warehouse units:

  • 大量データの読み込みまたは変換操作を実行する前に、データが短時間で使用可能になるようにスケールアウトします。Before you perform a heavy data loading or transformation operation, scale out to make the data available more quickly.
  • 営業時間のピーク時は、より多くの同時実行クエリに対応できるようにスケールアウトします。During peak business hours, scale out to accommodate larger numbers of concurrent queries.

スケール アウトしてもパフォーマンスが向上しない場合の対処What if scaling out does not improve performance?

データ ウェアハウス ユニットを追加すると、並列性が増加します。Adding data warehouse units increasing the parallelism. 作業がコンピューティング ノード間で均等に分割されている場合、並列性を追加すると、クエリのパフォーマンスが向上します。If the work is evenly split between the Compute nodes, the additional parallelism improves query performance. スケール アウトしてもパフォーマンスが変化しない場合は、その理由がいくつか存在します。If scaling out is not changing your performance, there are some reasons why this might happen. ディストリビューション全体でデータが傾斜しているか、クエリによって大量のデータ移動が発生している可能性があります。Your data might be skewed across the distributions, or queries might be introducing a large amount of data movement. クエリのパフォーマンスの問題を調査するには、パフォーマンスのトラブルシューティングに関する記事を参照してください。To investigate query performance issues, see Performance troubleshooting.

コンピューティングの一時停止と再開Pausing and resuming compute

コンピューティングを一時停止すると、ストレージ レイヤーがコンピューティング ノードからデタッチされます。Pausing compute causes the storage layer to detach from the Compute nodes. コンピューティング リソースがアカウントから解放されます。The compute resources are released from your account. コンピューティングが一時停止中は、コンピューティングに対する課金はありません。You are not charged for compute while compute is paused. コンピューティングを再開すると、ストレージがコンピューティング ノードに再アタッチされ、コンピューティングの課金が再開されます。Resuming compute reattaches storage to the Compute nodes, and resumes charges for Compute. SQL プールを一時停止すると、次のようになります。When you pause a SQL pool:

  • コンピューティング リソースとメモリ リソースは、データ センターで使用可能なリソースのプールに返されます。Compute and memory resources are returned to the pool of available resources in the data center
  • 一時停止の期間中、データ ウェアハウス ユニットのコストは 0 になります。Data warehouse unit costs are zero for the duration of the pause.
  • データ ストレージは影響を受けず、データはそのまま残ります。Data storage is not affected and your data stays intact.
  • 実行中またはキューに入れられたすべての操作が取り消されます。All running or queued operations are cancelled.

SQL プールを再開すると、次のようになります。When you resume a SQL pool:

  • SQL プールがデータ ウェアハウス ユニット設定のコンピューティングとメモリのリソースを取得します。The SQL pool acquires compute and memory resources for your data warehouse units setting.
  • データ ウェアハウス ユニットのコンピューティングの課金が再開されます。Compute charges for your data warehouse units resume.
  • データが使用可能になります。Your data becomes available.
  • SQL プールがオンラインになった後、ワークロード クエリを再開する必要があります。After the SQL pool is online, you need to restart your workload queries.

常に SQL プールにアクセスできることが必要な場合は、一時停止ではなく、最小サイズへのスケールダウンを検討してください。If you always want your SQL pool accessible, consider scaling it down to the smallest size rather than pausing.

一時停止と再開の手順については、Azure Portal または PowerShell のクイックスタートに関する記事を参照してください。For pause and resume steps, see the Azure portal, or PowerShell quickstarts. 一時停止 REST API または 再開 REST API を使用することもできます。You can also use the pause REST API or the resume REST API.

一時停止またはスケールの前にトランザクションを排出するDrain transactions before pausing or scaling

一時停止操作またはスケール操作を開始する前に、既存のトランザクションを完了することをお勧めします。We recommend allowing existing transactions to finish before you initiate a pause or scale operation.

SQL プールを一時停止またはスケーリングすると、一時停止またはスケーリング要求を開始したときに、バックグラウンドでクエリが取り消されます。When you pause or scale your SQL pool, behind the scenes your queries are canceled when you initiate the pause or scale request. 単純な SELECT クエリの取り消しは、短時間で終わる処理であるため、インスタンスを一時停止またはスケールするのにかかる時間にほとんど影響しません。Canceling a simple SELECT query is a quick operation and has almost no impact to the time it takes to pause or scale your instance. ただし、データやデータ構造を変更するトランザクション クエリは、すぐに停止できない場合があります。However, transactional queries, which modify your data or the structure of the data, may not be able to stop quickly. トランザクション クエリについては、当然、すべてが完了するか、変更をロールバックする必要があります。Transactional queries, by definition, must either complete in their entirety or rollback their changes. トランザクション クエリが完了した作業をロールバックするには、クエリが元の変更の適用にかかった時間と同じか、それよりも長くかかる場合があります。Rolling back the work completed by a transactional query can take as long, or even longer, than the original change the query was applying. たとえば、行の削除を既に 1 時間実行しているクエリを取り消した場合、削除された行を挿入し直すのに 1 時間かかる可能性があります。For example, if you cancel a query which was deleting rows and has already been running for an hour, it could take the system an hour to insert back the rows which were deleted. トランザクションの実行中に一時停止またはスケールを実行した場合、一時停止またはスケールするには、ロールバックが完了するのを待機する必要があるため、時間がかかることがあります。If you run pause or scaling while transactions are in flight, your pause or scaling may seem to take a long time because pausing and scaling has to wait for the rollback to complete before it can proceed.

トランザクションの概要トランザクションの最適化に関するページも参照してください。See also Understanding transactions, and Optimizing transactions.

コンピューティングの管理の自動化Automating compute management

コンピューティングの管理操作を自動化するには、Azure の機能を使用したコンピューティングの管理に関する記事を参照してください。To automate the compute management operations, see Manage compute with Azure functions.

スケール アウト、一時停止、再開の各操作は、完了するのに数分かかる場合があります。Each of the scale-out, pause, and resume operations can take several minutes to complete. スケーリング、一時停止、または再開を自動化する場合は、別のアクションに進む前に特定の操作を確実に完了させるロジックを実装することをお勧めします。If you are scaling, pausing, or resuming automatically, we recommend implementing logic to ensure that certain operations have completed before proceeding with another action. さまざまなエンドポイントを通じて SQL プールの状態を確認することで、このような操作の自動化を適切に実装できます。Checking the SQL pool state through various endpoints allows you to correctly implement automation of such operations.

SQL プールの状態を確認するには、PowerShell または T-SQL のクイックスタートに関する記事を参照してください。To check the SQL pool state, see the PowerShell or T-SQL quickstart. REST API を使用して、SQL プールの状態を確認することもできます。You can also check the SQL pool state with a REST API.


SQL プールをスケーリングするには、ALTER DATABASE に関するページで説明されているアクセス許可が必要です。Scaling the SQL pool requires the permissions described in ALTER DATABASE. 一時停止と再開には、SQL DB Contributor のアクセス許可、具体的には Microsoft.Sql/servers/databases/action が必要です。Pause and Resume require the SQL DB Contributor permission, specifically Microsoft.Sql/servers/databases/action.

次のステップNext steps

コンピューティングの管理については、ハウツー ガイドを参照してください。コンピューティング リソースの管理の別の側面として、個々のクエリへの異なるコンピューティング リソースの割り当てがあります。See the how to guide for manage compute Another aspect of managing compute resources is allocating different compute resources for individual queries. 詳細については、「ワークロード管理用のリソース クラス」を参照してください。For more information, see Resource classes for workload management.