Tag Archives: 2005

Dicas para otimizar suas funções SQL

Existe uma grande diferença entre escrever uma instrução SQL que funciona e uma que funciona bem e é performática.

Algumas vezes os desenvolvedores estão muito focados em escrever suas queries que apenas resolvam uma tarefa específica sem levar em consideração performance ou o impacto na instancia do SQL server, como por exemplo quantidade de CPU, IO e memória que eles estão consumindo.  Assim, eles comem outros processos do SQL Server durante a execução derrubando toda a instância. Este artigo tentará prover ao desenvolvedor alguns pequenos detalhes que podem ajudar a otimizar as instruções.

Um grande número de livros e “white papers” foram escritos falando sobre performance no SQL server e este artigo não ira de forma alguma substituir o conhecimento que pode ser adiquirido com esses livros e “white papers”. A intenção é prover uma lista rápida para ajudar o desenvolvedor a identificar possíveis gargalos que podem existir no código SQL.

Continue reading Dicas para otimizar suas funções SQL

Uma pequena coleção de comandos DBCC

Existe um número bem legal de comandos DBCC que não fazem nada de mais a não ser checar consistencia no banco de dados. Eu coloque alguns no script abaixo. O primeiro comando é o único considerado mais “perigoso”, isso causará um grande stress no sistema de I/O enquanto efetua a limpesa do cache. Dependendo do workload, isso pode levar alguns minutos, e durante o processo ele pode impactar a performance.

-- A Small Collection of Useful DBCC Commands
-- Glenn Berry
-- August 2010
-- http://glennberrysqlperformance.spaces.live.com/
-- Twitter: GlennAlanBerry

-- Clears out contents of buffer cache
-- Use caution before doing this on a production system!
DBCC DROPCLEANBUFFERS;

-- Clears procedure cache on entire Continue reading Uma pequena coleção de comandos DBCC 

Script de Fragmentação de Índices

Bom,,, o script abaixo analisa todos os objetos de índices da instância do SQL e mostra a fragmentação dos índices… em teoria, quanto maior a coluna fragmentation mais fragmentado estará o índice.

SELECT CONVERT(NVARCHAR(130), SERVERPROPERTY(‘servername’)) AS instancename ,
db.name AS databaseName ,
ps.OBJECT_ID AS objectID ,
ps.index_id AS indexID ,
ps.partition_number AS partitionNumber ,
ps.avg_fragmentation_in_percent AS fragmentation ,
ps.page_count
FROM sys.databases db
INNER JOIN sys.dm_db_index_physical_stats(NULL, NULL, NULL, NULL,
N’Limited’) ps ON db.database_id = ps.database_id
WHERE ps.index_id > 0
AND ps.page_count > 100
AND ps.avg_fragmentation_in_percent > 30
OPTION ( MAXDOP 1 ) ;

Alterar língua do FullText

A algum tempo atrás tive que alterar a língua de pesquisa do FullText do SQL 2005 de Neutral para Portugês.

Em teoria um procedimento bem simples, acha o FullText, edita dele e troca na caixa pra Português.

Mas, como sempre, nada é tão simples assim…

Descobri que por padrão o SQL 2005 não traz alguns idiomas, para adicionar o Português tive que fazer o procedimento do KB908441.

Mas, ao invés de ficar lendo o KB vo descrever o passo a passo pra fazer funcionar:

IMPORTANTE !!!

Se você utilizar mais de uma instância do SQL no mesmo servidor você vai ter que fazer o procedimento mais de uma vez.

Ok, sabendo disso, agora vamos começar.

Levando em conta que provavelmente você está usando uma instância, ela é conhecida como MSSQL.1

1. Clique em Start, clique em Run, digite regedit e clique em OK

2. Dentro do Editor de Registro, localize a seguinte chave:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\MSSearch\CLSID

3. No menu Edit escolha New e clique em Key

4. Digite {25B7FD48-5404-4BEB-9D80-B6982AF404FD} e pressione Enter

5. No painel da direita, modifique o valor Default

6. Em Edit String, digite ptblr.dll e clique em OK

7. No menu Edit escolha New e clique em Key

8. Digite {D5FCDD7E-DBFF-473F-BCCD-3AFD1890EA85} e pressione Enter

9. No painel da Direita, modifique o valor Default

10. Em Edit String digite ptblr.dll e clique em OK

Adicione uma sub-chave ao MSSQL.1\MSSearch\Language

11. No menu Edit escolha New e clique em Key

12. Digite ptb e pressione Enter

13. Na Tabela abaixo existem 4 itens que devem ser criados:

Tipo Nome Valor
String NoiseFile C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\FTData\noiseptb.txt
String TsaurusFile C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\FTData\tsptb.xml
DWord Locate 00000416
String WBreakerClass {25B7FD48-5404-4BEB-9D80-B6982AF404FD}
String SemmerClass {D5FCDD7E-DBFF-473F-BCCD-3AFD1890EA85}

Depois desse pequeno processo, pelo menos no meu caso, não tive que reinicia o SQL para aparecer Portugês, mas tive que executar um Rebuild do FullText.