画像提供:マイナビニュース

写真拡大

2018年4月、Azure SQL Data Warehouseに新たな機能がリリースされました。今回は、この新しくリリースされた機能「Compute Optimized Gen2」(以降、Gen2)について解説します。

○新たなパフォーマンスレベル「Compute Optimized Gen2」

Gen2はこれまでのSQL Data Warehouseの機能をそのままに、性能面で大幅にアップグレードされたもので、実際には新しいパフォーマンスレベルのモデルが提供されたことになります。これまでのパフォーマンスレベルのモデルも今まで通り提供されますが、Gen2の提供に伴い、これまでのモデルの名称は「Compute Optimized Gen1」(以降、Gen1)と名称が変更されました。新たなGen2の特徴は以下の通りです。

○計算ノードの1台当たりのスペックが5倍

計算ノードのスペックはGen1に比べ、Gen2では1台当たり約5倍と大幅にアップグレードされました。また、Gen1では性能を示す指標として、「DWU」と言う表記でしたが、Gen2では「DWUc」となります。

Gen1ではDWU100で1台の計算ノードが割り当てられるのに対して、Gen2ではDWU500cで1台の計算ノードが割り当てられることになります。このため、DWU1000とDWU1000cは価格が同じですが、内部の構成が異なることに注意が必要になります。

Gen1で1000DWUの場合は計算ノード10台の構成になるのに対して、Gen2では計算ノード2台の構成となります。計算ノードのスペックが5倍になったからといって、DWU 1000とDWU1000cの間でスペックそのものが5倍になるわけではないことは注意が必要です。

SQL Data Warehouseでは60のストレージに対して、計算ノードの割り当てを行います。これはGen1、Gen2でも同様の動きとなります。このため、Gen1であれGen2であれ、ストレージが60しかないので、計算ノードの数は最大でも60台までしか割り当てることができません。Gen2では最大DWU30000cまでスケールアップすることができますが、計算ノード1台あたりの性能はDWU500cです。

以下の計算式からもこのアーキテクチャを理解することが可能です。

Gen1

最大計算ノード数60台×1台当たりのDWU100=最大DWU6000

Gen2

最大計算ノード数60台×1台当たりのDWU500c=最大DWU30000c

計算ノードのローカルストレージがNVMe SSDに

計算ノードのローカルストレージにはNVMe SSDが搭載されました。SQL Data Warehouseをチューニングする際、一時テーブルを利用することは多々ありますが、これらはIO性能に優れたNVMe SSDに配置されることになり、これまでよりも高速化が期待できます。

頻繁にアクセスするデータをローカルNVMe SSDへキャッシュ

頻繁にアクセスするColumstore Indexのデータに関しては、NVMe SSDへキャッシュされます。このため、IO性能が向上し処理を高速化できます。

容量制限が無制限に

Gen1では物理的な容量制限が設けられており、240TBが格納できる最大の容量となっていました。これは圧縮後のデータを240TBまで格納できるというものですが、Gen2ではこの容量制限がなくなり、無制限に利用することが可能となります。

上記の通り、新たなパフォーマンスレベルであるGen2がリリースされたことから、より巨大なデータ、激しいワークロードにも耐えられるようになりました。また、クエリの同時実行に関してもより多くの並列実行が可能となりました。

○Gen1→Ge2へのアップグレード

今まで、Gen1を利用していたユーザーは、もちろんGen2へアップグレード可能です。Azure PortalのSQL Data Warehouseの画面上で、「Gen2へアップグレードします」というタスクがあるので、これをクリックすれば、アップグレードを実行できます。

アップグレード時はすべてのセッションが一時的に強制終了され、新たな計算ノードが割り当てられます。その後、計算ノードが起動すれば利用可能となりますが、バックグラウンドではGen1のストレージからGen2のストレージへ徐々に移行が行われることになります。バックグラウンドでの実行は完了まで時間がかかるため、より高速に移行を行いたい場合は、Alter index Rebuildコマンドを実行してストレージの移行を行うこともできます。

○Gen2の最小DWUcは1000

Gen2では最小のDWUcは1000となっています。このためGen1をDWU1000以下で稼働させていたユーザーについては、Gen1からGen2へのアップグレードはコストの問題から現実的ではないと言えます。新しいパフォーマンスレベルであるGen2は大量のデータや高負荷なワークロードを実行しているような環境のために用意されているといっていいでしょう。

また、Gen2のDWUcは計算ノードが1台当たりDWU500cと設定されている関係上、DWU500cずつしか大きくすることができません。したがって、スモールスタートしたいユーザーや、より小さなDWUからDWU6000まで細かくコントロールしたいユーザーは、Gen2ではなくGen1の利用が現実的な方法となります。

○Gen1とGen2のパフォーマンス比較

Gen1とGen2のパフォーマンスは、同じ価格帯であればどれくらい異なるのでしょうか。

Gen1でDWU1000、Gen2でDWU1000cのスペックの場合、価格はほぼ同じになります。そこで、Gen1のDWU1000とGen2のDWU1000cでパフォーマンスの検証を実施しました。パフォーマンスの検証には、TPC-Hと呼ばれるデータウェアハウス系のパフォーマンスを計測するツールを使いました。TPC-HではQphHと呼ばれる独自のパフォーマンス指標が存在し、QphHが大きければ大きいほど高速に処理したことを表します。

結果は上記の通りとなりました。

今回はTPC-Hのデータを圧縮前で1000GB用意し、それぞれの環境でQphHのスコアを計測。Gen1-DWU1000のQphHのスコアを1とした場合のGen2-DWU1000cのスコアは1.78と、約1.8倍となります。今回の結果からもわかる通り、同じ価格であっても、Gen2のほうが高速で処理できます。このため、Gen1-DWU1000以上で稼働させているSQL Data Warehouseは、Gen2へアップグレードしたほうが費用に対する性能が高くなります。

SQL Data Warehouseに新しいパフォーマンスレベルが加わり、より巨大で厳しいワークロードでもSQL Data Warehouseが利用できるようになりました。一方で、それほど大きなSQL Data Warehouseを利用していないユーザーにとって、これまでの環境はGen1として利用可能であり、利用しているSQL Data Warehouseが巨大に成長したタイミングでGen2へのアップグレードを検討することもできます。ユーザーにとっては選択できる幅が広がり、より使いやすくなったのではないかと思います。

山口 正寛

1984年生まれ。大阪府出身、東京都在住。データベースエンジニア。SQL Server、Oracle、MySQL、PostgreSQLなどのデータベースで、小規模から大規模な案件まで数多く経験。現在ではクラウドの流れに逆らうことなく、「データベース×クラウド」をキーワードに案件対応、セミナー活動、執筆活動など幅広く活動中。株式会社システムサポート所属。