GET_QUERY_OPERATOR_STATS 및 EXPLAIN 함수와 명령: 배열로 표현되는 상위 연산자

주의

이 동작 변경 사항은 2023_05 번들에 있습니다.

번들의 현재 상태는 번들 기록 섹션을 참조하십시오.

다음 명령과 함수는 쿼리 실행에 대한 세부 정보를 제공합니다.

이러한 명령과 함수의 출력에는 쿼리를 구성하는 연산자 노드 트리에 각 연산자 노드에 대한 정보가 포함됩니다.

배경

현재 이 정보에는 단일 상위 노드를 식별하는 열 또는 속성이 포함됩니다. 연산자 노드에 여러 상위 노드가 있는 상황을 다루는 것은 아닙니다.

예를 들어, 다음 쿼리의 프로필을 생성한다고 가정해 보겠습니다.

WITH wv AS (
    SELECT a FROM t WHERE a % 2 = 1
  )
  SELECT a FROM wv WHERE a % 3 = 1
  UNION ALL
  SELECT a FROM wv WHERE a % 5 = 1;
Copy

이 쿼리의 프로필에서 WithClause [4] 노드에는 다음과 같은 여러 상위 노드가 있습니다.

Tree of operator nodes in the query profile

위 쿼리의 경우 GET_QUERY_OPERATOR_STATS 및 EXPLAIN 명령과 함수의 출력에는 WithReference [3]WithClause [4] 의 상위 노드로 식별하는 열 또는 속성이 있습니다. 하지만 두 개의 상위 노드(WithReference [3]WithReference [8])가 있습니다.

출력 변경 사항

현재 릴리스에서는 상위 노드의 기존 열 또는 속성이 상위 노드의 ID로 구성된 배열을 포함하는 다음 열 또는 속성 중 하나로 바뀝니다.

SQL 명령 또는 함수

기존 열 또는 속성

새 열 또는 속성

EXPLAIN 및 SYSTEM$EXPLAIN_PLAN_JSON

parent

parentOperators

GET_QUERY_OPERATOR_STATS

PARENT_OPERATOR_ID

PARENT_OPERATORS

EXPLAIN 명령 및 EXPLAIN_JSON 함수의 테이블 형식 출력 변경 사항

다음 문을 실행한다고 가정해 보겠습니다.

EXPLAIN WITH wv AS (
    SELECT a FROM t WHERE a % 2 = 1
  )
  SELECT a FROM wv WHERE a % 3 = 1
  UNION ALL
  SELECT a FROM wv WHERE a % 5 = 1;
Copy

출력이 아래 설명과 같이 변경됩니다.

이전

출력에 단일 상위 노드 ID를 포함한 상위 열이 포함됩니다.

+------+------+--------+---------------+ ...
| step | id   | parent | operation     | ...
+------+------+--------+---------------+ ...
| NULL | NULL |   NULL | GlobalStats   | ...
|    1 |    0 |   NULL | Result        | ...
|    1 |    1 |      0 | UnionAll      | ...
|    1 |    2 |      1 | Filter        | ...
|    1 |    3 |      2 | WithReference | ...
|    1 |    4 |      3 | WithClause    | ...
...
현재

출력에 상위 노드 ID로 구성된 배열을 포함한 parentOperators 열이 포함됩니다.

+------+------+-----------------+---------------+ ...
| step | id   | parentOperators | operation     | ...
|------+------+-----------------+---------------+ ...
| NULL | NULL | NULL            | GlobalStats   | ...
|    1 |    0 | NULL            | Result        | ...
|    1 |    1 | [0]             | UnionAll      | ...
|    1 |    2 | [1]             | Filter        | ...
|    1 |    3 | [2]             | WithReference | ...
|    1 |    4 | [3, 8]          | WithClause    | ...
...

EXPLAIN_JSON 함수의 경우 함수에 전달된 계획에 상위 연산자에 대한 정보가 포함되지 않은 경우 parentOperators 열은 NULL이 됩니다.

EXPLAIN 명령과 SYSTEM$EXPLAIN_PLAN_JSON의 JSON 출력 변경 사항

쿼리 계획의 JSON 출력을 생성하는 문을 실행한다고 가정해 보겠습니다. 예:

EXPLAIN USING JSON WITH wv AS (
    SELECT a FROM t WHERE a % 2 = 1
  )
  SELECT a FROM wv WHERE a % 3 = 1
  UNION ALL
  SELECT a FROM wv WHERE a % 5 = 1;
Copy

출력이 아래 설명과 같이 변경됩니다.

이전

출력에 단일 상위 노드 ID를 포함한 상위 속성이 포함됩니다.

{
  ...
  "Operations": [[
    ...
    {"id":1,"parent":0,"operation":"UnionAll"},
    {"id":2,"parent":1,"operation":"Filter", ...},
    {"id":3,"parent":2,"operation":"WithReference"},
    {"id":4,"parent":3,"operation":"WithClause", ...},
    ...
Copy
현재

출력에 상위 노드 ID로 구성된 배열을 포함한 parentOperators 속성이 포함됩니다.

{
  ...
  "Operations":[[
    ...
    {"id":1,"operation":"UnionAll","parentOperators":[0]},
    {"id":2,"operation":"Filter",... , "parentOperators":[1]},
    {"id":3,"operation":"WithReference","parentOperators":[2]},
    {"id":4,"operation":"WithClause",... ,"parentOperators":[3,8]},
    ...
Copy

GET_QUERY_OPERATOR_STATS 함수 출력의 변경 사항

다음 문을 실행한다고 가정해 보겠습니다.

WITH wv AS (
    SELECT a FROM t WHERE a % 2 = 1
  )
  SELECT a FROM wv WHERE a % 3 = 1
  UNION ALL
  SELECT a FROM wv WHERE a % 5 = 1;
Copy
SET lid = LAST_QUERY_ID();
Copy
SELECT * FROM TABLE(GET_QUERY_OPERATOR_STATS($lid));
Copy

출력이 아래 설명과 같이 변경됩니다.

이전

출력에 단일 상위 노드 ID를 포함한 PARENT_OPERATOR_ID 열이 포함됩니다.

+-----+---------+-------------+--------------------+---------------+ ...
| ... | STEP_ID | OPERATOR_ID | PARENT_OPERATOR_ID | OPERATOR_TYPE | ...
+-----+---------+-------------+--------------------+---------------+ ...
| ... |       1 |           0 |               NULL | Result        | ...
| ... |       1 |           1 |                  0 | UnionAll      | ...
| ... |       1 |           2 |                  1 | Filter        | ...
| ... |       1 |           3 |                  2 | WithReference | ...
| ... |       1 |           4 |                  3 | WithClause    | ...
...
현재

출력에 상위 노드 ID로 구성된 배열을 포함한 PARENT_OPERATORS 열이 포함됩니다.

|-----+---------+-------------+------------------+---------------+ ...
| ... | STEP_ID | OPERATOR_ID | PARENT_OPERATORS | OPERATOR_TYPE | ...
|-----+---------+-------------+------------------+---------------+ ...
| ... |       1 |           0 | NULL             | Result        | ...
| ... |       1 |           1 | [                | UnionAll      | ...
|     |         |             |   0              |               | ...
|     |         |             | ]                |               | ...
| ... |       1 |           2 | [                | Filter        | ...
|     |         |             |   1              |               | ...
|     |         |             | ]                |               | ...
| ... |       1 |           3 | [                | WithReference | ...
|     |         |             |   2              |               | ...
|     |         |             | ]                |               | ...
| ... |       1 |           4 | [                | WithClause    | ...
|     |         |             |   3,             |               | ...
|     |         |             |   8              |               | ...
|     |         |             | ]                |               | ...
...

참조: 1175