Synapse SQLプールのスペックと3層構造の検証
Synapse SQLプールのスペックとノード、ディストリビューションについての検証したのでまとめました。
3層構造のアーキテクチャ
Synapse SQLプールは3層構造のアーキテクチャとなっています。
制御ノード(コントロールノード)
接続やMPPエンジンにおける並列クエリの最適化の調整をするノード。(1台で構成されます。)計算ノード(コンピュートノード)
実際に処理が実行されるノード。1つのSynapse SQLプールに1台以上で構成されます。
また、1つのコンピュートノードに1つ以上のディストリビューションが紐づきます。ストレージ(ディストリビューション)
実際のデータが格納されており60台で構成されます。各ディストリビューションは1つのコンピュートノードに紐づきます。
それぞれのディストリビューションが複数のコンピュートノードで共有されることはありません。
また、Synapse SQLプールはスペックを「cDWU」という単位で指定し、DW100c~DW30000cまでの間で指定可能です。
今回はこの「cDWU」と上記の3層構造の関係を検証しました。
cDWUを大きくしても、コントロールノードは1台、ディストリビューションは60個
前提の知識といたしまして、Synapse SQLプールではcDWUをどれだけ大きくしても、コントロールノードは1台で構成され、ディストリビューションは60個で構成されます。
cDWUに合わせて変化が起きるのは、コンピュートノードのスペックや台数となります。
検証
cDWUの変更
cDWUの変更はAzureポータル、Powershellなどから行えますが、今回はT-SQLにて以下のコマンドで実行しました。
それぞれのcDWUとコンピュートノードの関係を確認していきます。
※すべてmasterデータベースで実行してください。
ALTER DATABASE "<SQLプール名>"
MODIFY (SERVICE_OBJECTIVE = 'DW<指定のcDWU>c');
変更状態の確認は以下のコマンドで確認可能です。
SELECT
*
FROM sys.dm_operation_status
WHERE resource_type_desc = 'Database'
AND major_resource_id = '<SQLプール名>';
現在のcDWUの確認は以下で行います。
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
WHERE
ds.edition='DataWarehouse';
DW100c~DW500cはコンピュートノードは1台
コンピュートノードの確認は以下のコマンドで確認できます。(SQLプールで実行してください。)
select
*
from sys.dm_pdw_nodes node
left join sys.dm_pdw_nodes_os_sys_info sysinfo
on node.pdw_node_id=sysinfo.pdw_node_id;
DW100cで上記のコマンドで確認を行うと結果は以下の通りとなります。
DW100cの場合はコントロールノード1台、コンピュートノード1台で構成されている事がわかります。
また、以下のコマンドで各コンピュートノードにいくつのディストリビューションが紐づいているか確認できます。
select
pdw_node_id,
count(*) cnt
from sys.pdw_distributions
group by pdw_node_id;
結果は以下の通り、1つのコンピュートノードに60すべてのディストリビューションが紐づきます。
DW100c~DW500cまで同様に確認を行っていきましたが、この構成は変わりませんでした。
一方でdm_pdw_nodes_os_sys_info
テーブルのcommitted_target_kb
やmax_workers_count
が以下のように変化したため、コンピュートノード1台であっても処理能力が向上している事が推察されます。
cDWU | committed_target_kb | max_workers_count |
---|---|---|
DW100c | 58646024 | 1843 |
DW200c | 127515528 | 3686 |
DW300c | 195830648 | 5529 |
DW400c | 262173528 | 7372 |
DW500c | 341075896 | 9216 |
DW1000c以降はDW500c毎に1台ずつコンピュートノードが追加される
DW100cからDW500cまではコントロールノード1台、コンピュートノード1台、ディストリビューション60の構成でコンピュートノードのスペックが変わっていました。
一方、DW1000c以降はDW500c毎に1台ずつコンピュートノードが追加されるようです。
以下DW1000cの時のノードの状態です。(コンピュートが2台確認できます。)
以下DW1500cの時のノードの状態です。(コンピュートが3台確認できます。)
また、60のディストリビューションは以下の通り、DW1000cであれば2つのコンピュートノードそれぞれに30ずつ、DW1500cであれば3つのコンピュートそれぞれに20ずつ割り当てられました。
cDWU | compute node数 | ディストリビューション/compute node |
---|---|---|
DW1000c | 2 | 30 |
DW1500c | 3 | 20 |
この為、おそらく最大のDW30000cの場合には、60台のコンピュートノードそれぞれに1つのディストリビューションが紐づく事になるかと思います。
まとめ
DW100c~DW500cまでは1つのコンピュートノードのスペックにより処理性能が変わる。
DW1000c以降はDW500cにつき、コンピュートノードが1台追加され、台数に応じて処理性能がかわる。
60のディストリビューションは、割り当てられているコンピュートノードに均等に割り当てられる。(コンピュートが2台の場合は30ずつ、コンピュートが3台の場合は20ずつ)
Author And Source
この問題について(Synapse SQLプールのスペックと3層構造の検証), 我々は、より多くの情報をここで見つけました https://qiita.com/masahiro-yamaguchi/items/8548bf79c94a423c336c著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .