Не удается распараллелить создание Материализированного Представления - PullRequest
1 голос
/ 14 июня 2019

Я пытаюсь создать материализованное представление, ссылающееся на удаленную таблицу с более чем 8 миллионами записей.Я поместил выражение "PARALLEL 8" в оператор DDL MVIEW, а подсказку "/ * + PARALLEL (8) * /" в MVIEW QUERY.

При создании не был активирован параллельный подчиненный процесс для процесса.

В чем дело?

Спасибо за совет.

Это параметр DOP целевого сервера:

NAME                                 TYPE        VALUE
------------------------------------ ----------- -----------------------
fast_start_parallel_rollback         string      LOW
parallel_adaptive_multi_user         boolean     TRUE
parallel_automatic_tuning            boolean     FALSE
parallel_degree_level                integer     100
parallel_degree_limit                string      CPU
parallel_degree_policy               string      MANUAL
parallel_execution_message_size      integer     16384
parallel_force_local                 boolean     FALSE
parallel_instance_group              string
parallel_io_cap_enabled              boolean     FALSE
parallel_max_servers                 integer     80
parallel_min_percent                 integer     0
parallel_min_servers                 integer     8
parallel_min_time_threshold          string      AUTO
parallel_server                      boolean     FALSE
parallel_server_instances            integer     1
parallel_servers_target              integer     32
parallel_threads_per_cpu             integer     2
recovery_parallelism                 integer     0

Я попытался установить параметр "parallel_degree_policy«из РУЧНОГО в АВТО и изменяющий сеанс (перед запуском оператора создания MVIEW») с:

ALTER SESSION FORCE PARALLEL DML PARALLEL 8;
ALTER SESSION FORCE PARALLEL QUERY PARALLEL 8;

... но с тем же результатом ..

Вот DDL MVIEW:

CREATE MATERIALIZED VIEW NEMESI_REPLICA.SCGC_CONSENSI (ID_CODICE_CONSENSO,ID_CLIENTE,OPERATORE,TIMESTAMP_SCGC,TIMESTAMP_CONSENSO,ARCHIVIAZIONE,VALORE_CONSENSO,ID_SISTEMA,ID_SOCIETA,ID_CANALE_ACQUISIZIONE,INTEGRITA,NOTA,ID_IDENTIFICAZIONE_CLIENTE,CANALE_SCGC,STATO_CLIENTE,ID_FRONTEND)
TABLESPACE TBS_NEMESI_REPLICA
PCTUSED    0
PCTFREE    10
INITRANS   2
MAXTRANS   255
STORAGE    (
               INITIAL          1M
               NEXT             30M
       MINEXTENTS       1
       MAXEXTENTS       UNLIMITED
       PCTINCREASE      0
       BUFFER_POOL      DEFAULT
       )
NOCACHE
NOLOGGING
NOCOMPRESS
PARALLEL 8
BUILD IMMEDIATE
USING INDEX
      TABLESPACE TBS_NEMESI_REPLICA
      PCTFREE    10
      INITRANS   2
      MAXTRANS   255
      STORAGE    (
          INITIAL          1M
          NEXT             50M
              MINEXTENTS       1
          MAXEXTENTS       UNLIMITED
          PCTINCREASE      0
          BUFFER_POOL      DEFAULT
          FLASH_CACHE      DEFAULT
          CELL_FLASH_CACHE DEFAULT
      )
REFRESH FAST ON DEMAND
WITH PRIMARY KEY
AS 
SELECT
       /*+ PARALLEL(8) */
       "SCGC_CONSENSI"."ID_CODICE_CONSENSO" "ID_CODICE_CONSENSO",
       "SCGC_CONSENSI"."ID_CLIENTE" "ID_CLIENTE",
       "SCGC_CONSENSI"."OPERATORE" "OPERATORE",
       "SCGC_CONSENSI"."TIMESTAMP_SCGC" "TIMESTAMP_SCGC",
       "SCGC_CONSENSI"."TIMESTAMP_CONSENSO" "TIMESTAMP_CONSENSO",
       "SCGC_CONSENSI"."ARCHIVIAZIONE" "ARCHIVIAZIONE",
       "SCGC_CONSENSI"."VALORE_CONSENSO" "VALORE_CONSENSO",
       "SCGC_CONSENSI"."ID_SISTEMA" "ID_SISTEMA",
       "SCGC_CONSENSI"."ID_SOCIETA" "ID_SOCIETA",
       "SCGC_CONSENSI"."ID_CANALE_ACQUISIZIONE" "ID_CANALE_ACQUISIZIONE",
       "SCGC_CONSENSI"."INTEGRITA" "INTEGRITA",
       "SCGC_CONSENSI"."NOTA" "NOTA",
       "SCGC_CONSENSI"."ID_IDENTIFICAZIONE_CLIENTE"
          "ID_IDENTIFICAZIONE_CLIENTE",
       "SCGC_CONSENSI"."CANALE_SCGC" "CANALE_SCGC",
       "SCGC_CONSENSI"."STATO_CLIENTE" "STATO_CLIENTE",
       "SCGC_CONSENSI"."ID_FRONTEND" "ID_FRONTEND"
FROM
       "SCGC_ONLINE"."SCGC_CONSENSI"@"NEMESI_LINK" "SCGC_CONSENSI";

1 Ответ

1 голос
/ 14 июня 2019

Вы ставите параллель на mview DDL и на запрос mview, возможно, вы столкнулись с какой-то ошибкой

Параллельный DML не используется для обновления Mview (идентификатор документа 2529168.1)

Проверьте заметки MOS и найдите некоторые решения.

Другой подход - изменить основную таблицу на степень> 1, и тогда ваше обновление будет параллельно.

"Когда в главной таблице материализованного представления атрибут PARALLEL установлен на> 1, тогда создание, а также процессы обновления будут распараллелены. Независимо от того, указали ли вы Параметр PARALLELISM в предложении REFRESH не имеет значения. "

Как обновить материализованное представление параллельно (ID документа 577870.1)

Сначала я бы попробовал второй подход и изменил степень вашей основной таблицы, чтобы выполнить тест. Если не решить вашу проблему, проверьте примечание MOS

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...