#02 – Para que serve

Ei galera, comunidade e amantes de Banco de Dados, boa tarde.

Sexta – feira, mas que beleza final de semana chegando, dois dias de descanso merecidos, mas isso pra mim não muda em nada, sabe por que? Pois ainda estou de férias, férias (kkkkkkkkkk).

Deixando isso de lado a vida continua, ela não pode parar principalmente a vida tecnlógica, alias essa minha vida tecnológica viva a toda sempre em um ritmo acelerado, e como vocês podem observar nos últimos dias meu blog esta bombando de posts, parece até que estou com mais vontade para interagir com vocês.

Neste segundo post da sessão Para que Serve, vou trazer algo que muitos dos profissionais de banco de dados sempre utilizam naqueles momentos em que tudo parece não dar certo, estou me referindo as boas e velhas Trace Flags(isso não é magia negra, bruxaria ou assombração, isso é tecnologia, kkkkkk) existentes no Microsoft SQL Server desde suas primeiras versões.

Posso dizer com grande tranquilidade, elas são algo mágico que a equipe de engenheiros e desenvolvedores do Microsoft SQL Server está sempre acrescentando e melhorando em cada versão do produto. Ao fazer a escolhar de usar uma, duas ou três trace flags, podemos estar alterando totalmente o comportamento por parte do SQL Server uma sessão, transação, conexão, banco de dados e até mesmo servidor/instância durante o processamento de uma ou mais querys.

No post de hoje, vou apresentar e ilustrar três trace flags pertencentes a lista de trace flags não documentadas, como você deve ter ouvido falar em algum momento, existem diversas trace flag(alguns dizem que são fantasmas existentes no SQL Server) que a Microsoft não apresenta ou possui documentação oficial, ainda mais se pesquisarmos nos próprios sites Microsoft dedicados os produto ou no Books On-Line.

Estou me referindo especificamente as Trace Flags: 3604, 9204, 9292, onde as flags 9204 e 9292 possuem algo em comum que você vai descobrir no decorrer deste post. Então vamos em frente, vamos lá conhecer um pouco mais sobre estas “trace flags fantasminhas”, abaixo destaco um pequeno resumo de cada trace flag, no final dois exemplos de como podemos utilizar cada uma delas no Microsoft SQL Server 2012 ou 2014.

Caso você não possua nenhuma destas versões, utilize os links abaixo para realizar os downloads:


 

Bom divertimento, começa aqui o #02 – Para que serve!!!

  • Trace Flag 3604: Dentre as trace flags desconhecidas ou não documentas a 3604 é bastante comum de ser encontrada na internet em diversos posts, artigos e publicações. Basicamente sua função é apresentar as mensagens geradas pelo SQL Server durante o processo de rastreamento ou monitoramento estatístico na guia de mensagens existentes no Management Studio.
    Quando realizamos habilitamos esta flag para uso através do comando DBCC TraceON (3604) esta orientando o SQL Server a direcionar as mensagens oriundas ou resultando do rastreamento estatístico para guia de mensagens, desta forma poderemos fazer a análise destas mensagens. Para ativar a trace flag utilize o comando DBCC TraceON (3604) ou DBCC TraceOFF (3604) para desativar, ou se preferir utilize a opção QueryTraceOn em sua respectiva query.

 

  • Trace Flag 9204: Esta trace flag pode ser considerada um dos elementos fundamentais para os profissionais de banco de dados, no momento em que estão realizando uma análise ou monitoramento da performance do SQL Server durante a execução de uma query. A 9204 permite entender e apresentar como podemos saber quais as estatísticas na verdade estão sendo utilizadas pelo otimizador de querys para calcular ou estimar o nível de cardinalidade. Desta maneira, torna-se possível identificar possíveis problemas por parte do SQL Server em obter dados relacionados. Ativando a Trace Flag 9204 o SQL Server vai apresentar na guia de mensagens existem no Management Studio um pequeno cabeçalho sobre objetos de estatísticas totalmente carregado e usado pelo otimizador de querys para estimativar o número de cardinalidade gerado e consumido para obtenção dos dados requeridos por parte da transação executado. Este cabeçalho é conhecido como Stats loaded.
    Para ativar esta a flag utilize o comando DBCC TraceON (9204) ou DBCC TraceOFF (9204) para desativar, ou se preferir utilize a opção QueryTraceOn em sua respectiva query.

 

  • Trace Flag 9292: No momento em tomamos a decisão de utilizar a flag 9292, orientamos o SQL Server a apresentar todos os objetos estatísticos considerados úteis por parte do plano de execução para realizar o processamento e retorno dos dados. O uso da trace flag 9292 dentro de uma sessão ou query específica, nos ajuda a entender e conhecer como as estatísticas e seus elementos podem mudar totalmente a maneira que o plano de execução é idealizado, armazenado e processado.
    Através da flag 9292 podemos obter um relatório sobre as estatíticas para cada objeto envolvido em nossa query, onde estes supostos objetos devem ser considerados úteis, ou melhor dizendo válidos e aplicáveis no decorrer do caminho realizado até a apresentação do resultado.
    Esta é uma trace flag que pode ser usado durante a resolução de problemas, onde sua função é apresentar na guia de mensagens do Management Studio, um pequeno cabeçalho contendo informações estatísticas sobre cada componente útil e válido para formas os dados estatísticos de processamento da query. Este cabeçalho é conhecido como Stats header loaded.
    Para ativar a trace flag utilize o comando DBCC TraceON (9292) ou DBCC TraceOFF (9292) para desativar, ou se preferir utilize a opção QueryTraceOn em sua respectiva query.

 


Conforme destacado no início deste post, vou apresentar dois exemplos básicos de como podemos fazer uso destas trace flags:

— 1 – Exemplo – Utilizando as Trace Flags: 3604, 9204 e 9292 na sessão através do comando DBCC TraceOn/TraceOff —

Use [AdventureWorks2012]
Go

DBCC FreeProcCache
Go

DBCC TraceOn (3604)
DBCC TraceOn (9292)
DBCC TraceOn (9204)

Select * From Person.Person
Where lastName like ‘D%’

DBCC TraceOff (3604)
DBCC TraceOff (9292)
DBCC TraceOff (9204)
Go

— 2- Exemplo – Utilizando as Trace Flags: 3604, 9204 e 9292 de forma específica na query através da opção QueryTraceOn —

Use [AdventureWorks2012]
Go

DBCC FreeProcCache
Go

Select * From Person.Person
Where lastName like ‘D%’
option
(
querytraceon 3604,
querytraceon 9292,
querytraceon 9204
)
Go

Ótimo que estão os exemplos, podemos observar através da Figura 1 apresentada a seguir como os respectivos cabeçalhos são apresentados pelas Trace Flags 9292 e 9204 na guia de mensagens do Management Studio, vale ressaltar que a importância da trace flag 3604 para ativar apresentação de informações ocultas na guia de mensagens do Management Studio.

Cabeçalhos-Trace-Flags
Figura 1 – Cabeçalhos gerados na utilização das Trace Flags 9292 e 9204.

 

 

 


 

Ficou interessado em saber mais sobre as Trace Flags? Acesse um dos links apresentados abaixo e descubra mais sobre estas fantásticas funcionalidades presentes e também “escondidas” no Microsoft SQL Server.

Links:


 

 

E ai gostou do #02 – Para que serve, eu gostei, claro sou suspeito a falar, mas torço e espero que você tenha gostado, de preferência de todo post, mas isso não for possível, quem sabe pelo menos uma parte espero que tenha chamado a sua atenção.

Com isso chegamos ao final de mais um Para que Serve, agradeço sua participação e visita ao meu blog. Não deixe de contribuir com críticas, sugestões, comentários, opiniões, enfim contribua também interagindo cada vez mais proporcionando esta troca de conhecimento.

Um grande abraço, sucesso, nos encontramos em breve.

Tchau.