クエリオプティマイザー
データベース管理システムの分野では、クエリ オプティマイザーはデータベース クエリの効率的な実行を保証する上で重要な役割を果たします。 クエリオプティマイザーの構成要素IBM® watsonx.data 、処理されるクエリのパフォーマンスが向上します。Presto(C++) エンジン。 最適化が実行可能であると分析された場合、クエリは書き換えられ、そうでない場合はネイティブ エンジンの最適化が優先されます。
クエリオプティマイザーサポートされていませんPresto(Java)。
内でwatsonx.data 、クエリオプティマイザークエリの最適化を担当するコンポーネントとして動作します。 標準SQLクエリを入力として受け入れ、最適化されたSQL相当のクエリを生成します。これは、Presto(C++) 最適化が実行できない場合、システムは元のクエリの使用に戻ります。
クエリオプティマイザー貴重な追加として登場watsonx.dataユーザーはクエリを最適化し、エンジンのパフォーマンスを向上させることができます。
見ることができます クエリオプティマイザーマネージャーの有効化 詳細についてはセクションをご覧ください。
の利点クエリオプティマイザー
クエリ最適化機能Db2活用されているwatsonx.data考慮される主な要素は次のとおりです。
-
watsonx.data用途Db2最高のパフォーマンスを実現するために何十年にもわたって磨き上げられたクエリ最適化として。
広範な開発、クエリ最適化機能を活用し、Db2SQL クエリを分析し、最適な実行プランを生成します。 考慮される主な要素は次のとおりです。
- 正確な統計: RUNSTATS は、情報に基づいた意思決定のためにデータ分布とカーディナリティの推定値を収集します。
- 適切に設計されたインデックスと制約: これらは、オプティマイザーを効率的なアクセス パスに導き、データの整合性を強化します。
- 複雑なクエリのための高度なテクニック: コストベースの最適化とカーディナリティ推定により、効率的な処理が保証されます。
-
強化されたクエリパフォーマンス:クエリオプティマイザークエリを効果的に最適化し、パフォーマンスを大幅に向上させます。
-
シームレス統合:クエリオプティマイザー既存のものとシームレスに統合watsonx.dataインフラストラクチャを構築し、スムーズな導入プロセスを保証します。
-
柔軟な最適化:クエリオプティマイザーユーザーはグローバル レベルまたはセッション レベルで機能を有効または無効にできるため、柔軟に動作します。
-
クエリオプティマイザは HiveとIcebergテーブルをサポートしています。
制限クエリオプティマイザー
- クエリオプティマイザーサポートのみPrestoC++ です。
- メタストアが同期されると、すべてのスキーマとテーブルは大文字になります。 例えば、
"catalog".SCHEMA.TABLE
です。 - 3部構成の名前クエリでは、カタログ名を小文字で引用符で囲む必要があります(
"catalog".SCHEMA.TABLE
)。それ以外の場合、クエリはエラーを返します。 - 最適なパフォーマンスを得るには、NOT NULL、主キー、外部キーなどの制約を定義する必要があります。
Query Optimizer engine
テーブルが同期された後。 - 有効にすると、クエリオプティマイザー、現在接続されているすべてのカタログのメタデータPrestoエンジンはオプティマイザー エンジンと自動的に同期されます。 ただし、オプティマイザーを有効にした後にカタログまたはスキーマを追加する場合は、ユーザーによる手動のメタデータ同期が必要になります。 参照する クエリオプティマイザーの同期 詳細な手順については、こちらをご覧ください。
- カタログまたはスキーマがアクセス不能または破損していた場合クエリオプティマイザーデプロイメントでは、そのメタデータはオプティマイザー エンジンに存在しません。 すべてのオブジェクトが期待どおりに存在することを確認するには、ユーザーは、クエリオプティマイザーの同期 不足しているメタデータを手動で検証し、同期する場合もあります。
- クエリオプティマイザー機能は少なくとも1つのアクティブなPrestoC++エンジンWatsonx.data実例。 最後に残ったものを削除しようとしていますPrestoC++エンジンながらクエリオプティマイザー有効にすると、クエリオプティマイザー自体。 誤って非アクティブ化されないように、ユーザー インターフェイス内に確認プロンプトが表示されます。
- クエリオプティマイザービューをサポートしません。
- 投影リスト内の 10 進数列と浮動小数点数列が入れ替わる可能性があり、データ型の不一致が発生する可能性があります。
- 特定のクエリ (完全外部結合、反結合) では正しい結果が返されません。
- 識別子内の特殊文字は正しく機能しません。
- クエリオプティマイザーは現在、
SELECT
ステートメントのみをサポートしています。