Para analisar o desempenho das instruções SQL executadas no SQL Server, existe uma ferramenta simples de utilizar que são as estatísticas:
Set Statistics IO ON - Apresenta a quantidade de atividade em disco para a execução da instrução.
Set Statistics Time ON - Quantidade de tempo para analisar, compilar e executar cada instrução.
Para avaliar corretamento as estatíticas de IO é interessante executar a instrução DBCC DropCleanBuffers para tirar as páginas de cache de leitura.
Exemplo:
DBCC DropCleanBuffers
Set Statistics Time on
Set Statistics IO on
Select * From HumanResources.Employee
Resultado:
A execução do DBCC foi concluída. Se o DBCC imprimiu mensagens de erro, entre em contato com o administrador do sistema.
Tempos de Execução do SQL Server:
Tempo de CPU = 0 ms, tempo decorrido = 1 ms.
(290 linha(s) afetadas)
Tabela 'Employee'. Número de verificações 1, leituras lógicas 9, leituras físicas 2, leituras read-ahead 7, leituras lógicas lob 0, leituras físicas lob 0, leituras read-ahead lob 0.
Tempos de Execução do SQL Server:
Tempo de CPU = 20 ms, tempo decorrido = 874 ms.
quarta-feira, 4 de fevereiro de 2009
quarta-feira, 28 de janeiro de 2009
Escrever o nome do mês em Oracle
Muitas vezes é necessário escrever o mês por extenso. Para tanto, no Oracle basta especificar a formatação adequada:
SQL> select to_char(sysdate, 'Month') from dual;
TO_CHAR(SYSDATE,'MONTH')
------------------------------------
January
Se o mês não estiver em uma data, mas em um campo numérico separado do dia e ano (má escolha, mas as vezes acontece), primeiro é necessário transformar em um valor do tipo Date.
SQL> select to_char(to_date(10, 'mm'), 'Month') from dual;
TO_CHAR(TO_DATE(10,'MM'),'MONTH')
------------------------------------
October
E se precisar do nome dos meses em português, basta trocar o atributo da sessão:
ALTER SESSION
SET NLS_DATE_LANGUAGE = Portuguese;
SQL> select to_char(sysdate, 'Month') from dual;
TO_CHAR(SYSDATE,'MONTH')
------------------------------------
Janeiro
SQL> select to_char(sysdate, 'Month') from dual;
TO_CHAR(SYSDATE,'MONTH')
------------------------------------
January
Se o mês não estiver em uma data, mas em um campo numérico separado do dia e ano (má escolha, mas as vezes acontece), primeiro é necessário transformar em um valor do tipo Date.
SQL> select to_char(to_date(10, 'mm'), 'Month') from dual;
TO_CHAR(TO_DATE(10,'MM'),'MONTH')
------------------------------------
October
E se precisar do nome dos meses em português, basta trocar o atributo da sessão:
ALTER SESSION
SET NLS_DATE_LANGUAGE = Portuguese;
SQL> select to_char(sysdate, 'Month') from dual;
TO_CHAR(SYSDATE,'MONTH')
------------------------------------
Janeiro
quinta-feira, 18 de dezembro de 2008
Team Foundation Server Error 29112
Após vários dias tentando resolver este erro (Error 29112 - Report server service not configured properly) na instalação do Team Foundation Server (TFS), descobri que o problema era que o banco de dados que estava definido no Report Server do SQL Server não estava com o nome padrão "ReportServer", bastou configurar a ferramenta com este nome no banco de dados que o problema foi resolvido.
segunda-feira, 10 de novembro de 2008
Nova Vídeo-Aula para a SQL Magazine
Foi disponibilizada no site da revista SQL Magazine uma nova vídeo-aula mostrando o funcionamento do Resource Governor do SQL Server 2008. Este recurso disponibilizado nesta nova versão do banco de dados possibilita a administração da utilização de memória e CPU pelos usuários do SGBD. Maiores detalhes em: http://www.devmedia.com.br/articles/viewcomp.asp?comp=10974
quinta-feira, 30 de outubro de 2008
Reportagens da TechEd 2008
Na TechEd 2008 houveram diversas palestras sobre o SQL Server 2008, abaixo tem algumas reportagens sobre os assuntos abordados que estão no WNews. Vale a pena dar uma conferida.
Canal TechEd no WNews:
http://wnews.uol.com.br/site/
Vídeos ref. Banco de dados:
- SQL Server 2008 - Um dia na vida de um DBA - com Buck Woody (Program Manager - SQL Server - Microsoft Corp.)
http://wnews.uol.com.br/site/teched/?V=081014-ted-buckwoody - SQL Server 2008 - Gerenciamento baseado em políticas - com Luiz Felipe Pimenta
http://wnews.uol.com.br/site/teched/?V=081016-ted- felipepimenta - SQL Server 2008 - Novidades do Reporting Services - com Daniel Camillo
http://wnews.uol.com.br/site/teched/?V=081016-ted- danielcamillo
Algumas matérias sobre o assunto:
- SQL Server 2008 - Novidades do Reporting Services
http://wnews.uol.com.br/site/noticias/materia.php?id_secao= 4&id_conteudo=11862 - SQL Server 2008 - Tecnologias para facilitar a vida dos DBAs
http://wnews.uol.com.br/site/noticias/materia.php?id_secao= 4&id_conteudo=11840
(Colaboração: Marcus Vinicius Bittencourt)
quarta-feira, 22 de outubro de 2008
Grouping Sets no SQL Server 2008
A nova versão do banco de dados SQL Server 2008 acrescentou uma nova funcionalidade na Transact-SQL que permite o controle dos totais que devem ser acrescentados no result sets da consulta SQL.
Antes com a cláusula Rollup todos os níveis existentes no group by acrescentavam um total no result set, por exemplo em um agrupamento de Empresa, Filial, Funcionario era gerado uma linha de total por Empresa,Filial,Funcionario, outro na quebra de Empresa,Filial e outro na quebra de Empresa.
Com esta nova cláusula é possível informar que somente devem ser gerados totais por Empresa, Filial, Funcionário e outro por quebra de Empresa, desprezando a quebra por filial.
Sintaxe:
Select Empresa, Filial, Funcionario, SUM(Valores)
From FichaFinanceira
Group By Grouping Sets ( (Empresa, Filial, Funcionario), (Empresa) )
Order By Empresa, Filial, Funcionario
Antes com a cláusula Rollup todos os níveis existentes no group by acrescentavam um total no result set, por exemplo em um agrupamento de Empresa, Filial, Funcionario era gerado uma linha de total por Empresa,Filial,Funcionario, outro na quebra de Empresa,Filial e outro na quebra de Empresa.
Com esta nova cláusula é possível informar que somente devem ser gerados totais por Empresa, Filial, Funcionário e outro por quebra de Empresa, desprezando a quebra por filial.
Sintaxe:
Select Empresa, Filial, Funcionario, SUM(Valores)
From FichaFinanceira
Group By Grouping Sets ( (Empresa, Filial, Funcionario), (Empresa) )
Order By Empresa, Filial, Funcionario
quinta-feira, 31 de julho de 2008
Estatísticas de Índices no Firebird
Quando é realiza uma consulta a uma tabela no firebird, o otimizador do banco de dados utiliza estatísticas existentes para os índices da tabela envolvida com o objetivo de escolher qual deles utilizar para ter o melhor desempenho.
Estas estatísticas são calculadas em cima do número de chaves distintas para cada índice.
A medida que a tabela vai recebendo novos dados estas estatísticas vão ficando desatualizadas, algumas vezes basta atualizar-las para ter um bom ganho de desempenho nas consultas.
O comando que atualiza as estatísticas de um índice é o seguinte:
SET STATISTICS INDEX nomeíndice;
Estas estatísticas são calculadas em cima do número de chaves distintas para cada índice.
A medida que a tabela vai recebendo novos dados estas estatísticas vão ficando desatualizadas, algumas vezes basta atualizar-las para ter um bom ganho de desempenho nas consultas.
O comando que atualiza as estatísticas de um índice é o seguinte:
SET STATISTICS INDEX nomeíndice;
Assinar:
Postagens (Atom)