Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

  1. Criar um banco novo.
    Bloco de código
    dbinit.exe banco.db
    
    dbspawn.exe -f dbeng11.exe -o banco_msg.txt -oe banco_fatal.txt -x tcpip banco.db 
    
    dbisql.com -c "ENG=banco;DBN=banco;UID=dba;PWD=sql
    
  2. Iniciar Sybase Central e se conectar ao banco.
  3. Clicar em Work with server "Banco".
  4. Clicar com o botão da direita do mouse em cima do ícone que representa o banco (à direita).
  5. Irá aparecer a tela abaixo. Clique em Next.
  6. Escolha a opção Custom no nível de detalhe do tracing. Clique em Next.
  7. Aperte o botão New para definir um novo nível de detalhe.
  8. Escolha a opção Database no scope, plans_with_statistics no tracing type e none nas conditions. Clique no botão Add. Você pode adicionar outros planos de tracing porém o mais importante é o plans_with statistics.
  9. Clique em Next.
  10. Escolha a opção Create a new tracing database com o nome banco_trace. Preencha o nome do usuário e senha com dba e sql respectivamente.
  11. Marque o checkbox "Start database in this server".
  12. Clique em Create database.
  13. Quando o comando voltar à tela, clique em Next.
  14. O banco foi iniciado no mesmo server que estamos monitorando (banco). Numa situação normal (em produção), é interessante não sobrecarregarmos demais o servidor iniciando o banco num outro computador. Assim, num ambiente de produção, desmarque o checkbox "Start database in this server" e digite o código abaixo.
    Bloco de código
    
    dbspawn.exe -f dbeng11.exe -o banco_trace_msg.txt -oe banco_trace_fatal.txt -x tcpip banco_trace.db
    dbisql.com -c "ENG=tracing;DBN=tracing;UID=dba;PWD=sql"
    
  15. Clique no botão Finish.
  16. A partir daqui, o banco monitorado já está enviando dados para o banco de tracing.
  17. Vamos gerar algumas instruções para ver o que pode ser monitorado. Normalmente, este passo é desnecessário num ambiente de produção já que os próprios usuários estarão gerando estas instruções.
  18. Abra o dbISQL e digite as instruções abaixo (pelo menos duas vezes para que o cache seja inicializado).
    Bloco de código
    
    SELECT 'query 1',
           SYSTABCOL.domain_id, 
           COUNT(*)
      FROM SYSTABCOL 
              CROSS JOIN SYSTAB  
              CROSS JOIN SYSGROUP
     GROUP BY SYSTABCOL.domain_id 
     ORDER BY SYSTABCOL.domain_id;
    
  19. Se a instrução acima não foi suficientemente lenta, podemos executar uma outra mais lenta.
    Bloco de código
    
    
    SELECT 'query 2',
           SYSTABCOL.domain_id, 
           COUNT(*)
      FROM SYSTABCOL  
              CROSS JOIN SYSTABCOL AS b  
              CROSS JOIN SYSGROUP
     GROUP BY SYSTABCOL.domain_id 
     ORDER BY SYSTABCOL.domain_id;
    
  20. Após a instrução ter sido executada pelo menos duas vezes, execute o Sybase Central e pare o Trace clicando com o botão da direita em cima do banco Banco escolhendo a opção Stop tracing with Save
    Image Added
  21. Clique no menu "Application Profiling" escolhendo a opção Open Analysis Or Connect To Tracing Database.
    Image Added
  22. Escolha a opção In a tracing database e clique no botão Open.
  23. Os dados devem ser preenchidos em relação ao banco tracing, isto é, ao banco criado especificamente para armazenar os dados de tracing. Assim, preencha o campo banco com banco_trace e o servidor banco (caso esteja executando o banco de tracing no banco criado acima - em produção deve-se ter um servidor específico para o tracing). Digite nome e senha (dba/sql) e clique em Connect.
  24. O painel de Tracing deve aparecer no Sybase Central (abaixo). Tome nota do Logging session Id para que possamos salvar os dados deste tracing mais abaixo.
    Image Added
  25. Clique na aba Database Tracing Data para ver os últimos comandos executados.
    Image Added
  26. Existem inúmeras outras opções para ver mais detalhes da query (clicando na aba Details numa determinada query) e, em seguida, clicando com o botão da direita em cima dos detalhes. O principal ponto a ser observado é que podemos analisar as queries mais demoradas para ver se podemos melhorá-las e, principalmente, podemos ver onde o servidor está gastando mais tempo de CPU.
  27. Para enviar estes dados para análise (de uma query), necessitamos do Log Session Id (anotado num passo anterior) e do request ID da query (abaixo - selecione a query, clique na aba Details e, em seguida, com o botão da direita do mouse, escolha a opção View more SQL statement details for the selected Statement.
    Image Added
    Image Added
  28. Com os dois dados acima, execute a instrução abaixo no dbISQL ajustando os dois parâmetros conforme o valor dos mesmos colhidos anteriormente.
    Bloco de código
    
    UNLOAD
    SELECT sa_diagnostic_cursor.plan_xml
      FROM dbo.sa_diagnostic_cursor
              INNER JOIN dbo.sa_diagnostic_request
                 ON  sa_diagnostic_request.logging_session_id = sa_diagnostic_cursor.logging_session_id
                 AND sa_diagnostic_request.cursor_id          = sa_diagnostic_cursor.cursor_id
     WHERE sa_diagnostic_request.logging_session_id = <logging session id>
       AND sa_diagnostic_request.request_id = <request Id>
        TO 'c:\temp\<nome desejado>.saplan' 
           DELIMITED BY ''  
           ESCAPES OFF  
           HEXADECIMAL OFF  
           QUOTES OFF;
    
    
  29. Com o plano salvo num arquivo, basta abri-lo através do dbISQL em outra máquina.