Durante a execução de um explain de uma query utilizando o hint parallel em um ambiente Oracle 11gR2 com o parâmetro paralllel_degree_policy definido como auto identifiquei a ocorrência da informação, nas notas do explain: - automatic DOP: skipped because of IO calibrate statistics are missing.
Automatic DOP significa Automatic degree Of Parallelism, uma feature introduzida na versão 11g que é controlada pelo parâmetro PARALLEL_DEGREE_POLICY, que definido como AUTO ativa a DOP quando utilizamos os hints parallel ou parallel(auto). Com esta opção o otimizador do Oracle define o grau de paralelismo através de métricas como as estatísticas coletadas e estatísticas de I/O.
Para mais detalhes sobre sobre paralelismo, recomendo a leitura do artigo Um pouco sobre paralelismo em Oracle Database 11g escrito por Joel Pérez e Jean Maia.
Bom, voltando a nosso cenário, abaixo segue o exemplo do explain gerado.
bidwp@SYS> explain plan for select /*+ parallel */ * from dual; 2 Explained. bidwp@SYS> set lines 190 set pages 10000 select * from table(dbms_xplan.display);bidwp@SYS> bidwp@SYS> Plan hash value: 3543395131 -------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | -------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 2 | 3 (0)| 00:00:01 | | 1 | TABLE ACCESS FULL| DUAL | 1 | 2 | 3 (0)| 00:00:01 | -------------------------------------------------------------------------- Note ----- - automatic DOP: skipped because of IO calibrate statistics are missing 12 rows selected. bidwp@SYS>
Conforme pode ser constatado no DOC ID 1269321.1, se o processo de calibrate não tiver sido executado, afim de reunir as estatísticas necessárias para a execução da feature Automatic Degree of Parallelism, a mesma será ignorada devido a falta de estatísticas de "calibração" de IO.
Para realizar a coleta das informações de IO o Oracle disponibiliza a package DBMS_RESOURCE_MANAGER.CALIBRATE_IO que é utilizada para a calibração.
O tempo de execução do processo de calibração está relacionado a quantidade de discos e nodes disponíveis. Mais informações sobre o processo de calibração podem ser verificas através do 11g Calibrate I/O Overview.
O tempo de execução do processo de calibração está relacionado a quantidade de discos e nodes disponíveis. Mais informações sobre o processo de calibração podem ser verificas através do 11g Calibrate I/O Overview.
Vale destacar que é recomendado que o processo de calibrate seja executado em horário de menor pico para evitar impactos em ambientes produtivos.
Agora que sabemos que para utilização do DOP precisamos executar o calibrate, vamos executa-lo (Realizar as leituras recomendadas antes da execução).
lamimtst@SYS> set timing on lamimtst@SYS> set time on 08:47:42 lamimtst@SYS> SET SERVEROUTPUT ON DECLARE lat INTEGER; iops INTEGER; mbps INTEGER; BEGIN --DBMS_RESOURCE_MANAGER.CALIBRATE_IO(, ,iops, mbps, lat); DBMS_RESOURCE_MANAGER.CALIBRATE_IO (28, 10, iops, mbps, lat); DBMS_OUTPUT.PUT_LINE ('max_iops = ' || iops); DBMS_OUTPUT.PUT_LINE ('latency = ' || lat); dbms_output.put_line('max_mbps = ' || mbps); 08:47:50 lamimtst@SYS> 08:47:50 2 08:47:50 3 08:47:50 4 08:47:50 5 08:47:50 6 08:47:50 7 08:47:50 8 08:47:50 9 08:47:50 10 08:47:50 11 END; 08:47:50 12 / max_iops = 6860 latency = 10 max_mbps = 1488 PL/SQL procedure successfully completed. Elapsed: 00:05:33.56
Após executar o processo de calibrate, podemos validar se a execução ocorreu com sucesso, consultando a visão V$IO_CALIBRATION_STATUS.
lamimtst@SYS> select * from V$IO_CALIBRATION_STATUS; READY 24-JUL-17 08.53.25.360 AM Elapsed: 00:00:00.06
Agora, vamos executar um novo explain para validar se a DOP está ativa após nosso processo de calibração.
lamimtst@SYS> explain plan for select /*+ parallel */ * from dual; 08:55:22 2 Explained. Elapsed: 00:00:00.01 08:55:23 lamimtst@SYS> set lines 190 set pages 10000 select * from table(dbms_xplan.display);08:55:28 lamimtst@SYS> 08:55:28 lamimtst@SYS> Plan hash value: 3543395131 -------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | -------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 2 | 3 (0)| 00:00:01 | | 1 | TABLE ACCESS FULL| DUAL | 1 | 2 | 3 (0)| 00:00:01 | -------------------------------------------------------------------------- Note ----- - automatic DOP: Computed Degree of Parallelism is 1 12 rows selected. Elapsed: 00:00:00.01 08:55:29 lamimtst@SYS>
É possível constatar que agora o explain está utilizando a Automatic DOP e para nossa consulta, definiu o grau de paralelismo 1, conforme pode ser validado na nota do explain (- automatic DOP: Computed Degree of Parallelism is 1).
Fonte:http://www.oracle.com/technetwork/pt/articles/database-performance/paralelismo-oracle-database-11g-2802040-ptb.html
https://docs.oracle.com/database/121/VLDBG/GUID-70CAEDE1-A8D2-464A-9A0B-FDEAFBCA85C3.htm
https://support.oracle.com/epmos/main/downloadattachmentprocessor?parent=DOCUMENT&sourceId=727062.1&attachid=727062.1:CALIBRATEIO&clickstream=yes
Comentários
Postar um comentário