SQL Server 2016 の最新技術で、Azure SQL Data Warehouse でのインサイト獲得がより迅速に

執筆者: Shivani Gupta (Senior Program Manager)

このポストは、1 月 31 日に投稿された SQL Server 2016 innovations power Azure SQL Data Warehouse to deliver faster insights の翻訳です。

 

Azure SQL Data Warehouse (SQL DW) は、SQL を基盤とするペタバイト規模のクラウド データウェアハウスで、大規模な並列処理に対応しています。高度な柔軟性を持つフルマネージド ソリューションであり、わずか数分でプロビジョニングやスケーリングを完了できます。コンピューティング能力とストレージ容量はそれぞれ別にスケーリング可能で、バースト対策からアーカイブまでさまざまな状況に対応でき、またクラスター構成にロックインされることなく使用量に対応する料金のみで利用できます。

各ノードでのクエリ実行を担当する Azure SQL DW の基盤となるエンジンには、マイクロソフトが提供する業界最先端の SQL Server データベース エンジン (英語) が採用されています。Azure SQL DW は、2016 年の一般提供開始 (英語) 以来 SQL Server 2016 のアップグレードが適用されており、分析クエリなどのユーザー ワークロードのパフォーマンスが透過的に 40% 向上しています。

SQL DW の高いパフォーマンスは、列ストアと、ベクトル化クエリ実行とも呼ばれるバッチ モード実行 (英語) エンジンの 2 つの柱によって実現されています。この記事では、SQL DW のパフォーマンス レベルをさらに進化させた SQL Server 2016 の主な機能強化点について説明します。これらの機能は、Columnar 圧縮やセグメント廃止 (英語) といった従来の機能と併せて使用できます。このソリューションには、1 度に 1 つの値を処理するのではなく、SIMD というハードウェア技術を活用して複数行を並列処理するバッチ モード実行が既に実装されていますが、SQL Server 2016 ではこのバッチ モード実行がさらに拡張され、使用可能な演算子やシナリオが広がりました。

ここでは主に、SQL Server 2016 の列ストアとバッチ モードに関する主なパフォーマンス強化について説明します。サンプルやパフォーマンス向上などさらに詳しい情報については、各項目にあるリンク先のブログ記事を参照してください。

集計のプッシュダウン

集計は、分析クエリで最もよく使用されるタスクの 1 つです。列ストア テーブルを使用すれば、SQL Server では集計がバッチ モードで実行されるため、パフォーマンスが桁違いに向上します。SQL Server 2016 では、SCAN ノードに集計をプッシュ (英語) することでさらに集計のコンピューティング パフォーマンスを向上させており、スキャン実行中にデータが圧縮されたままの状態で集計処理ができるようになっています。

文字列予測のプッシュダウン

SQL Server 2016 の列ストアでは、文字列予測が SCAN ノードにプッシュダウン (英語) され、クエリ パフォーマンスが大幅に向上しています。文字列予測のプッシュダウンでは、辞書を活用して、比較する文字列の数を最小化しています。

複数の集計

SQL Server 2016 では、テーブル スキャンで単一バッチ モード集計演算子を使用して複数の集計 (英語) をより効率的に処理できるようになりました。従来は、複数の集計パスと演算子はインスタンス化されていたため、高いパフォーマンスを発揮できませんでした。

バッチ モードでのウィンドウ集計

SQL Server 2016 ではウィンドウ集計のバッチ モード実行 (英語) が可能になりました。内部テストの結果では、バッチ モードを使用した場合、特定のクエリの速度が 300 倍も向上しました。

直列実行でのバッチ モード

高並列処理の場合でもコア数が少ない場合でも、クエリを直列実行できるようになりました。これまでは、直列クエリは Row モードで実行されていたため、並列処理とバッチ モードのいずれにも対応しておらず足かせとなっていました。SQL Server 2016 では、クエリでの並列処理の最適な程度 (DOP) が 1 の場合 (英語) でも、バッチ モードで実行できます (DOP = 1 の場合クエリは直列実行)。SLO の値が比較的低い SQL Data Warehouse (DWU1000 未満) では、分散クエリ 1 つあたりのコア数が 1 未満になるため、分散クエリはそれぞれ直列実行されます。こうした機能強化の結果、これらのクエリがバッチ モードで実行されるようになりました。

ここでご紹介したものは、今回 SQL DW に実装した大幅なパフォーマンス強化のごく一部です。上記のパフォーマンス強化を得るために、SQL DW のユーザー クエリに何か変更を加える必要はなく、ユーザーは自動的にこのメリットを得ることができます。

次のステップ

この記事では、SQL Server 2016 で提供される最新技術を駆使した列ストアとバッチ モードの機能によって、Azure SQL DW クエリのパフォーマンスが大幅に向上したことについて説明しました。ぜひお客様のオンプレミス環境のデータ ウェアハウスをクラウドに移行し、これらの機能をお試しください。

関連情報

SQL Data Warehouse の関連資料は以下のとおりです。

Azure SQL Data Warehouse の概要 SQL Data Warehouse のベスト プラクティス ビデオ ライブラリ (英語) MSDN フォーラム (英語) Stack Overflow フォーラム (英語)