このトピックでは、のクエリパフォーマンスに影響を与える要因について説明します。
このタスクについて
- クラスター仕様
クラスターはさまざまな仕様をサポートしています。 クラスター仕様の詳細については、「t2045008.html#section_wbg_rp4_3g3」をご参照ください。 クラスターの仕様が異なれば、それぞれに特定のCPUコア、メモリサイズ、およびストレージメディアがあるため、サブタスクを処理する機能も異なります。 ビジネスクエリの特性に基づいてクラスター仕様を選択する必要があります。 たとえば、結合またはグループ化および集約に向けられたビジネスクエリは、大量のCPUおよびメモリリソースを消費し、データスキャンまたは単純なグループ化および集約に向けられたクエリは、大量のディスクI/Oリソースを消費する。 リソース消費の違いにより、仕様が異なるクラスターではパフォーマンス制限が異なり、クエリ全体の効果に影響します。
- ノード数
は、分散データ処理アーキテクチャを使用して、クエリを複数のステージに分割し、これらのステージを異なるノードで並列に実行します。 より多くのノードを有するクラスタは、より高いクエリ処理能力を提供することができる。 実際のビジネス要件に基づいて、購入するクラスターノードの数を決定できます。 詳細については、「t1854366.html#task1307」をご参照ください。
- データ分散特性
は、分散データ処理アーキテクチャを使用して、複数のノードで並列にクエリを実行します。 ただし、が複数のノードを最大限に活用してクエリを並列実行できるかどうかは、ストレージノード上のデータの分散特性によって異なります。 データをストレージノードに均等に分散させることができれば、のデータ処理サブタスクをほぼ同時に完了することができます。 データが不均等に分散されている場合、データ処理中にサブタスクで長いレイテンシが発生し、最終的なクエリ効果に影響します。
- データサイズ
通常、クエリが実行されているとき、は一時的な結果をディスクに書き込まず、メモリ内のすべてのデータを処理しようとします。 大量のデータを処理する必要がある場合、クエリは、長期間にわたって大量のリソースを占有する可能性がある。 これにより、全体的なクエリ効率が低下し、最終的なクエリ効果に影響します。
大量のデータがテーブルに格納されている場合、インデックスフィルタリングや詳細データの読み取りなどの操作により、ディスクI/Oリソースの競合が発生し、クエリが遅くなります。
- クエリの同時実行
クラスターの仕様とサイズの制限により、が同時に処理できるクエリの数も制限されます。 多数のクエリが同時に実行され、クラスターノードのリソースが上限に達した場合、バックエンドのクエリは長時間キューに入れられます。 これは全体的なクエリ効果に影響します。
- クエリの複雑さ
は、複雑なクエリによって引き起こされるさまざまな問題の影響を受けます。 たとえば、クエリが複雑なフィルタ条件を使用する場合、データフィルタリング中にストレージノードから大量のデータが読み取られる可能性があります。 クエリが多数のJOIN演算子を含む場合、データは、ネットワークを介して異なるノード間で複数回転送される必要があり得る。 これは、ネットワーク輻輳を引き起こす。 GROUP BY句で多数の列が使用されている場合、大量のメモリリソースが占有されます。