quarta-feira, 4 de fevereiro de 2009

Ativando estatísticas do SQL Server

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, 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

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/teched/

Vídeos ref. Banco de dados:

Algumas matérias sobre o assunto:

http://blogs.technet.com/aggbug.aspx?PostID=3143047


(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

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;