Rastreando Paralelismo

Durante uma situação de diagnóstico de problemas de desempenho, sua análise pode lhe levar até uma única sessão agressora.

Se esta sessão estiver utilizando paralelismo, você terá que acompanhar também o que as sessões escravas criadas estão fazendo, ou verá apenas uma parte do problema.

Se o SQL utilizado pela sessão investigada contiver a HINT PARALLEL, fica óbvio saber que está sendo utilizado paralelismo. Mas se o paralelismo foi definido no nível do objeto, ou se a instância está utilizando Auto DOP (Automatic Degree of Parallelism), isto não aparece no texto do comando SQL.

Bem, uma sessão está utilizando paralelismo quando ela tem eventos PX relacionados a ela, na V$SESSION_EVENT ou V$SESSION_WAIT. A V$SESSION_EVENT mostra que em algum momento esta sessão utilizou paralelismo, enquanto a V$SESSION_WAIT (ou um trace 10046) mostra que o paralelismo está sendo utilizado no momento de sua observação.

E para saber quais são os processos escravo de uma sessão que está invocando paralelismo pode ser utilizada a VIEW V$PX_SESSION (a coluna QCSID mostra o SID ativo, do usuário). Em caso de solicitação de Trace, este deve ser habilitado em todos os SID escravos.

SQL> SELECT EVENT, TIME_WAITED FROM V$SESSION_EVENT WHERE SID = 12 ORDER BY 2;

EVENT                                                            TIME_WAITED
---------------------------------------------------------------- -----------
SQL*Net message to client                                                  0
Disk file operations I/O                                                   2
events in waitclass Other                                                 18
PX Deq: Join ACK                                                          28
PX Deq: Parse Reply                                                       66
db file parallel read                                                    142
db file scattered read                                                   256
os thread startup                                                        351
db file sequential read                                                 1624
PX Deq: Execute Reply                                                   2386
SQL*Net message from client                                          1673562

11 linhas selecionadas.

SQL> SELECT SID, SERIAL#, QCSID, QCSERIAL# FROM V$PX_SESSION;

       SID    SERIAL#      QCSID  QCSERIAL#
---------- ---------- ---------- ----------
       202       5249         12        387
        20       3587         12  387
        75       4043         12  387
       141        233         12  387
       204        751         12  387
        16        229         12  387
        73       3279         12  387
       137        403         12  387
       203       1137         12  387
        17        691         12  387
        78         23         12  387
       138        645         12  387
       205          5         12  387
        18        103         12  387
        79          5         12  387
       134       3431         12  387
       206          5         12  387
        19          5         12  387
        76         31         12  387
       140          5         12  387
        12  387         12

21 linhas selecionadas.

SQL>

Leave a Reply

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.