LoginSignup
0
1

More than 3 years have passed since last update.

Synapse SQLプールのスペックと3層構造の検証

Last updated at Posted at 2020-08-27

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で上記のコマンドで確認を行うと結果は以下の通りとなります。
image.png
DW100cの場合はコントロールノード1台、コンピュートノード1台で構成されている事がわかります。

また、以下のコマンドで各コンピュートノードにいくつのディストリビューションが紐づいているか確認できます。

select
    pdw_node_id,
    count(*) cnt
from sys.pdw_distributions
group by pdw_node_id;

結果は以下の通り、1つのコンピュートノードに60すべてのディストリビューションが紐づきます。
image.png

DW100c~DW500cまで同様に確認を行っていきましたが、この構成は変わりませんでした。
一方でdm_pdw_nodes_os_sys_infoテーブルのcommitted_target_kbmax_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台確認できます。)
image.png

以下DW1500cの時のノードの状態です。(コンピュートが3台確認できます。)
image.png

また、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ずつ)

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1