Você está na página 1de 4

Produto: Framework Verso: 11.

20 Processo: Log de Comandos SQL Introduo


Este documento tem por objetivo auxiliar na configurao e na utilizao do Log de Comandos SQL.

1. O que Log de Comandos SQL


O Log de Comandos SQL foi criado para buscar informaes sobre o cdigo fonte do sistema, no que diz respeito a sentenas SQL que podem acarretar no desempenho do sistema. O Log de Comandos SQL no fixo no sistema. Esta funcionalidade est disponvel para uso quando necessrio, mas por padro setada como desativada. Somente dever ser usada em ocasies especiais para monitoramento de desempenho. Para ativar o Log de Comandos SQL necessrio alterar os arquivos config do Host.

1.1. Como configurar o Log de Comandos SQL?


O Log de Comando SQL configurado da seguinte forma: Deve-se adicionar no arquivo de configurao do HOST (RM.Host.Exe.Config ou RM.Host.Service.Exe.Config) a seguinte condio: <add key = BadSyntaxLogEnabled value = True />, conforme imagem abaixo.

Fig.1 Configurao do Arquivo de Host

Adicionando esta linha de comando estaremos ativando o Log de Comando SQL. A


TOTVS Globais N 000xx_GDPFramework 1

partir deste momento, todas as aes executadas no sistema que envolva sentenas SQL sero gravadas na Tabela GDATALOG para monitoramento. Exemplo: Se um usurio deseja fazer um relatrio que exiba a listagem de funcionrios, contendo os campos chapa, nome e salrio, o mesmo poder ser feito atravs de sentena SQL da seguinte forma: Opo 1. [Select chapa, nome, salrio from pfunc], com esta sentena o sistema far uma pesquisa na tabela PFUNC nos campos CHAPA, NOME e SALRIO e exibir a listagem de funcionrios no relatrio. Ou Opo 2. [Select * from pfunc], com esta sentena o sistema far uma pesquisa na tabela PFUNC em todos os campos e exibir a listagem de funcionrios no relatrio. Em ambas as sentenas SQL sero possveis conseguir a listagem de funcionrios, mas usando-se a sentena SQL da opo 2, o sistema far uma busca em mais de 150 campos da tabela, proporcionando assim perda de performance do sistema, visto que demandar de mais tempo de processamento para buscar as informaes no banco de dados. Usando-se a sentena SQL da opo 1, o sistema no analisar todos os campos, e sim, os trs que foram descritos (chapa, nome, salrio). A listagem de funcionrios ser exibida de uma forma mais rpida e no demandar de tantos recursos para a gerao da listagem. Tratando-se de relatrios complexos, este processo pode causar instabilidade no sistema, podendo acarretar em seu travamento. O Log de Comandos SQL quando ativado, armazena as sentenas SQL executadas na tabela GDATALOG. Quando for notado que o sistema est lento, este Log dever ser habilitado e posteriormente o administrador do sistema poder consultar a tabela GDATALOG para verificar se esto sendo executadas no sistema sentenas SQL consideradas incorretas que oneram o desempenho.

1.2. Exemplo Prtico de uma Sentena SQL considerada Incorreta pelo sistema
Foi inserido no sistema uma sentena SQL [select * from pfunc], conforme descrito na opo 2 que pode onerar na performance do sistema. Ao executar esta sentena ser gravado um registro na tabela GDATALOG, visto que esta sentena considerada incorreta. O registro abaixo (Fig.3) foi extrado do Banco de Dados da Tabela GDATALOG aps a execuo da sentena SQL.

Fig. 2 Cadastro de Consulta SQL

TOTVS Globais N 000xx_GDPFramework

Fig. 3 Registro da Tabela GDATALOG

Para esta sentena, foram registradas duas observaes no campo [MESSAGE]. O sistema informou que: Obs 1: Sentena executada sem a propriedade NO LOCK que se trata de um recurso para bancos SQL SERVER para melhorar o desempenho de sentenas SQL Obs 2: Sentena executada com a clusula *, ou seja, a sentena leu inmeros campos sem necessidade, no nosso caso, analisou 178 campos de 50 funcionrios. A necessidade era ler apenas 3 campos (chapa, nome, salrio).

1.3. Exemplo Prtico de uma Sentena SQL considerada Correta pelo sistema
Foi inserido no sistema uma sentena SQL [select chapa, nome, salario from pfunc (NOLOCK)], conforme descrito na opo 1. Ao executar esta sentena NO ser gravado nenhum registro na tabela GDATALOG, visto que esta sentena considerada correta. OBS: A sentena SQL apesar de estar correta, poder ser gravada na Tabela GDATALOG se ultrapassar 30 segundos que o tempo padro aceitvel pelo sistema.
Consulta SQL

Fig. 4 Cadastro de

1.4. O que ser gravado na tabela GDATALOG?


Na tabela GDATALOG sero gravadas sentenas SQL consideradas incorretas seguindo o padro adotado pelo sistema: a) Consultas SQL sem a clusula NOLOCK, no caso de bancos Microsoft SQL SERVER b) Consultas SQL com comando Select * c) Consultas SQL que ultrapassem o tempo de execuo padro de 30 segundos c1) o tempo padro pode ser alterado incluindo-se no arquivo de configurao do host o parmetro <add key = QueryWaitTimeToLog value = 120 />, conforme imagem abaixo:

TOTVS Globais N 000xx_GDPFramework

Fig.5 Configurao do Arquivo de Host

De acordo com a tela acima (Fig. 5) vo ser gravadas sentenas SQL na tabela GDATALOG que ultrapassem o tempo de 2 minutos (value = 120 significa 120 segundos = 2 minutos) e no mais 30 segundos como adotado pelo sistema. OBS: Os parmetros BadSyntaxLogEnabled e QueryWaitTimeLog devero ser retirados do arquivo de configurao do HOST aps serem analisados, caso contrrio, a tabela GDATALOG continuar gravando as sentenas SQL executadas pelo sistema. O uso destes parmetros se faz necessrio apenas para analisar o que est sendo processado. Aps a captura dos dados, no mais preciso manter a configurao no arquivo de HOST.

Informaes Adicionais
de extrema importncia o bom uso destes parmetros. No podemos deixar de desabilit-los quando no mais forem necessrios. Os mesmos devero ser utilizados somente para anlise de desempenho do sistema.

Data de produo do documento: 04/10/2010

TOTVS Globais N 000xx_GDPFramework

Você também pode gostar