メタデータの末尾にスキップ
メタデータの先頭に移動

Clustrixデータベースは可能な限り並行して複雑なクエリを実行しようとする、ユニークなクエリ評価モデルを持っています。私たちのシステムは関係のあるデータがある場所でクエリの評価を実施します。基本的に 私あっちはクエリをデータのところに持ってきます。Clustrixのv5.0バージョンの一環として、評価モデルがデータの分散集合にまで拡張されました。この機能は、 分散型集合 と呼ばれ、クエリオプティマイザーに組み込まれています。

どうやって動くか

クエリが集合節(GROUP BY, DISTINCTなど)を含む場合、Clustrixは関係のあるデータを使って全てのノードに渡って集約計算を分散することができます。各ノードはローカルの集合を計算し、その後結果をGTMノードに送信します。Clustrixはコストベースのクエリオプティマイザーを使用し、最も低い実行プランを決定するために各可能性のあるプランの相対的なコストが使われます。Not all queries with aggregates with benefit from distribution, so a plan that leverages Distributed Aggregates will be considered by the optimizer, but may not be ultimately utilized.

分散型集合によって恩恵を受けるクエリの種類

Clustrixプランナーは自動的に各可能性のある実行プランのコストに基づいてプランを決定します。一般的に分散型集合は大きな削減要素を持つクエリに対して有用です。つまり、クエリは大量の行を検証し少数の行を返さなければならないことを意味します。データを要約し集合を実施するクエリは分散型集合の良い候補ですが、あるクエリに効果があるかどうかを決定する最も良い方法は、代表的なクエリのセットと一緒にクエリをするテストをすることです。 

分散型集合の設定

以下のグローバル変数はプランナーが分散型集合最適化を使用することができるかどうかを制御します。グローバル変数を修正する時はいつも用心してください。 

mysql> show global variables like 'sierra_allow_distributed_hash_aggregates';
+------------------------------------------+-------+
| Variable_name                            | Value |
+------------------------------------------+-------+
| sierra_allow_distributed_hash_aggregates | true  |
+------------------------------------------+-------+
1 row in set (0.00 sec) 

以下の例は分散型集合を利用するプランの実証です。部分的な集合のステップに注意してください。

mysql> explain select sum(id) from x;
+----------------------------------------------------+-----------+-----------+
| Operation                                          | Est. Cost | Est. Rows |
+----------------------------------------------------+-----------+-----------+
| hash_aggregate_combine expr0 := sum((0 . "expr0")) |     64.13 |     10.67 |
|   hash_aggregate_partial expr0 := sum((1 . "id"))  |     49.20 |     10.67 |
|     index_scan 1 := x.__base_x                     |     16.40 |     10.67 |
+----------------------------------------------------+-----------+-----------+
3 rows in set (0.01 sec)

hash_aggregate_partial 命令はそれぞれのノードに送信されますが、hash_aggregate_combine は最終結果セットを生成するための最終的な集合ステップを実施するでしょう。

注意: 分散型集合のための追加のグローバル変数がありますグローバル変数 sierra_allow_distributed_stream_aggregates はデフォルトで無効にされ、falseのままでなければなりません。

TOP
inserted by FC2 system