Usuário com melhor resposta
Dúvida sobre index

Pergunta
-
Olá Pessoal?
Por favor, alguém poderia me ajudar eu estou com uma dúvida sobre fragmentação de index, aqui na empresa onde eu trabalho, nunca foi feito uma desfragmentação dos Index.
Eu rodei esse script onde me fala todos os index e a porcentagem de fragmentação.SELECT NameIndex.index_id, NameIndex.name, index_type_desc, avg_fragmentation_in_percent FROM sys.dm_db_index_physical_stats (NULL, NULL, NULL, NULL, NULL) AS frag INNER JOIN sys.indexes AS NameIndex ON frag.object_id = NameIndex.object_id ORDER BY avg_fragmentation_in_percent DESC GO
Tenho vários index que estão com mais de 99% fragmentado, tanto index Nonclustered e Clustered
Gostaria de saber se eu posso executar esse seguinte código para organizar os index?ALTER INDEX ALL ON MinhaTabela REBUILD
Se eu executar esse código pode afetar em alguma coisa o meu banco de dados? Nunca executei rebuild de index em ambiente de produção, gostaria de saber se pode acontecer alguma fora do esperado.
Alguém tem alguma dica sobre isso que possa me passar?
Obrigado
Wellinghton Pimentel Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.
Respostas
-
Willington,
Não irá afetar em nada seu banco de dados, só tome cuidado que voce causara lock em suas tabelas portanto não recomendo a execução do mesmo em horario de produção por exemplo.
Fabrizzio A. Caputo
MCT
Certificações:
Oracle OCA 11g
MCITP SQL Server 2008 Implementation and Maintenance
MCITP SQL Server 2008 Developer
ITIL V3 Foundation
Blog Pessoal: www.fabrizziocaputo.wordpress.com
Twitter: @FabrizzioCaputo
Email: fabrizzio.antoniaci@gmail.com- Marcado como Resposta Wellinghton Ferreira Pimentel terça-feira, 2 de abril de 2013 12:34
Todas as Respostas
-
Willington,
Não irá afetar em nada seu banco de dados, só tome cuidado que voce causara lock em suas tabelas portanto não recomendo a execução do mesmo em horario de produção por exemplo.
Fabrizzio A. Caputo
MCT
Certificações:
Oracle OCA 11g
MCITP SQL Server 2008 Implementation and Maintenance
MCITP SQL Server 2008 Developer
ITIL V3 Foundation
Blog Pessoal: www.fabrizziocaputo.wordpress.com
Twitter: @FabrizzioCaputo
Email: fabrizzio.antoniaci@gmail.com- Marcado como Resposta Wellinghton Ferreira Pimentel terça-feira, 2 de abril de 2013 12:34
-
Ah legal, a minha ideia era realmente realizar o rebuild fora do horário de produção.
Fabrizzio muito obrigado pela ajuda.
Wellinghton Pimentel Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.
-
Wellington, bom dia!
Para facilitar sua vida, use esse script para encontrar fragmentação em suas bases de dados.
USE NomeBancoDados go IF OBJECT_ID('dbo.fn_FragmentacaoIndice') IS NOT NULL DROP FUNCTION dbo.fn_FragmentacaoIndice GO CREATE FUNCTION dbo.fn_FragmentacaoIndice (@Frag INT) RETURNS TABLE AS RETURN SELECT TOP 10000 '[' + DB_NAME() + '].[' + OBJECT_SCHEMA_NAME(ddips.[object_id], DB_ID()) + '].[' + OBJECT_NAME(ddips.[object_id], DB_ID()) + ']' AS [Object] , CASE WHEN i.[name] IS NULL THEN 'Tabela Heap/Sem Índice' ELSE i.[name] END AS [Index] , ddips.[index_type_desc] AS [Index Type], ddips.[partition_number] AS [Partition Number], ddips.[alloc_unit_type_desc] AS [Allocation Unit Type], ddips.[index_depth] AS [Index Depth], ddips.[index_level] AS [Index Level], CAST(ddips.[avg_fragmentation_in_percent] AS SMALLINT) AS [Average Fragmentation (%)] , CAST(ddips.[avg_fragment_size_in_pages] AS SMALLINT) AS [Average Fragment Size (pages)] , ddips.[fragment_count] AS [Fragments], ddips.[page_count] AS [Pages] FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'LIMITED') ddips INNER JOIN sys.[indexes] i ON ddips.[object_id] = i.[object_id] AND ddips.[index_id] = i.[index_id] WHERE ddips.[avg_fragmentation_in_percent] >= @Frag ORDER BY ddips.[avg_fragmentation_in_percent], OBJECT_NAME(ddips.[object_id], DB_ID()) , i.[name] -- SELECT * FROM dbo.fn_FragmentacaoIndice(15)
/* Se útil por favor classifique a resposta */
-
-
Pessoal como eu posso fazer para automatizar a minha rotina para reorganizar os indexes?
Estou usando o seguinte script para reorganizar:
ALTER INDEX ALL ON NomeDaTabela REBUILD
é possível eu colocar um "range" de tabela? Exemplo da tabela AAA1 até AAA20
Obrigado
Wellinghton Pimentel Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.
- Editado Wellinghton Ferreira Pimentel quarta-feira, 3 de abril de 2013 13:06 Faltou informação