CMDB クエリビルダーエンジンの実行モード
CMDB クエリビルダーエンジンは、2 つの実行モードを使用してクエリを実行します。デフォルトでは、システムはパフォーマンス最適化用に設計された拡張モード V2 を使用するように構成されています。V2 はほとんどのクエリでサポートされており、複雑なクエリを大幅に高速に実行し、パフォーマンスを低下させることなく大規模な結果セットを処理できます。
- V2
-
パフォーマンスとスケーラビリティを向上させるために設計された、拡張クエリ実行エンジン。これはデフォルトの実行エンジンです。V2 モードでは、V1 モードと比較して、CMDB クエリビルダーエンジンは、パフォーマンスを低下させることなく、複雑なクエリを大幅に高速に実行し、より大きな結果セットを処理できます。
ただし、一部のクエリ構造は V2 モードでサポートされていないため、そのようなクエリはレガシーモード (V1) を使用して自動的に実行されます。
- V1
- システムが V1 を使用するように明示的に構成されている場合に使用される従来の実行エンジン。このモードは、システムが V2 モードで実行するように構成されている場合でも使用され、V2 モードでサポートされていない構造でクエリを実行します。
「OR」演算子に関する考慮事項
以下のサンプルクエリなど、「OR」演算子を含むクエリの実行モードを設定するには、いくつかの特別な考慮事項が必要です。
「OR」構造でクエリを実行すると、V1 よりも V2 モードの方が大幅に高速になりますが、結果は V1 と V2 の実行モードで異なって表示されます。この違いは、「OR」演算子ノードが結合された結果セットと積間結果セットを生成するためです。V2 モードでは、関連する結果が単一の結果アイテムに結合されます。V1 では、同じ結果が別々の結果アイテムで表されます。
状況によっては、既存の組織レポートをサポートするために従来の形式の結果を保持するために、V1 エンジンモードを使用して「OR」構造でクエリを実行することが重要になる場合があります。以下で説明するように glide.cmdb.query.or_execution_mode システムプロパティを使用して、「OR」構造を持つクエリの実行モードを制御できます。
設定
- クエリレベルの設定:
保存済みクエリ [qb_saved_query] テーブルの Query Execution Mode 属性は、それぞれのクエリのエンジンモードを設定します。この設定の詳細については、「 クエリを実行するための実行モードを設定する」を参照してください。
クエリレベルの設定は、システムプロパティ設定よりも優先されます。
- グローバル設定:
クエリのモードがクエリレベルで設定されていない場合に使用するシステム全体のデフォルトモードを設定するシステムプロパティ glide.cmdb.query.execution_mode 。
- グローバル設定:
システムプロパティ glide.cmdb.query.or_execution_mode は、少なくとも 1 つの論理 OR 条件を含むクエリーのシステム全体のデフォルトの実行エンジンモードを設定します。「OR」構造を持つクエリの結果は V1 モードと V2 モードでフォーマットが異なるため、このプロパティ設定は結果に使用されるフォーマットにも影響します。
このプロパティは、 glide.cmdb.query.execution_mode システムプロパティよりも優先されます。
エンジンモードのシステムプロパティの詳細については、「 CMDB クエリビルダーのプロパティ設定」を参照してください。
V2 モードでサポートされていないクエリ構造
- 関連リスト条件を含むフィルターを使用したクエリ。
-
構成アイテム条件を含むフィルターと組み合わせた関係がありません:関係が構成されておらず、ターゲットノードのフィルターに構成アイテム条件があるノード。
例:
Server NOT connected to Router WHERE Router.status = Active。 - 関連するエッジ (適用可能なフロー、適用できないフロー、所属先、所属先ではない) を含むサービスマッピングクエリ。サービスクエリプロパティが [関連 CI を検索 ] または [ 関連しない CI を検索] に設定されているサービスマッピングクエリ、またはサービスクエリ接続プロパティが [ サービスに属していない] に設定された組み合わせクエリ。
意思決定フロー
システムは、関連するすべての設定とクエリ構造をチェックする意思決定フローを使用して、クエリの実行に使用する実行モードを決定します。最初に、クエリーレベルとシステムレベルの設定がチェックされます。次に、V2 を使用してクエリを実行するように設定されている場合、システムはクエリ構造をチェックして、V2 実行モードがクエリの構造をサポートしているかどうかを判断します。クエリに V2 でサポートされていない構造が含まれている場合、設定が V2 を使用するように構成されていても、実行は自動的に V1 モードの使用にフォールバックします。この自動フォールバックメカニズムは、可能な限りパフォーマンスのメリットを最大化しながら、すべてのクエリーの正常な実行をサポートします。
デフォルト設定を使用すると、クエリ構造が V2 実行モードでサポートされている場合、クエリは V2 モードを使用して実行されます。
- 保存済みクエリ [qb_saved_query] テーブルのクエリレコードの Query Execution Mode 属性の設定を確認します。
- 「V1」の場合:V1 を使用
- 「V2」の場合:ステップ #4 に進む — V2 サポートチェックの実行
- 「なし」の場合:次のステップの説明に従って、システムプロパティを確認します
- システムプロパティ glide.cmdb.query.execution_modeを確認します。
- 設定されていない場合:V2 を使用 保留中のサポートチェック
- 「V1」の場合:V1 を使用
- 「V2」の場合:
- 論理 OR 条件がない場合:ステップ #4 — V2 サポートチェックの実行に進みます
- 1 つ以上の論理 OR 条件の場合:次のステップで説明されているように、「OR」固有のチェックを実行します
- glide.cmdb.query.or_execution_modeの値を確認します。
- 「V1」の場合:V1 を使用
- 「V2」の場合:ステップ #4 にスキップ — V2 サポートチェックの実行
- 空の場合:V2 を使用
- V2 サポートチェックを実行:
- クエリに V2 でサポートされていない構造が含まれている場合:V1 を使用
- クエリ構造が V2 でサポートされている場合:V2 を使用
テーブルクエリーステータス [qb_query_status] の Query Execution Mode 属性は、各クエリーに割り当てられた実行モードを示します。