Alavancando Performance - Desfragmentando

Veja neste artigo: Alavancando Performance - Desfragmentando.

Alavancando Performance - Desfragmentando

Fragmentar é o mesmo que quebrar em partes ou despedaçar. Dizemos que um índice está fragmentado quando suas páginas não estão contíguas OU apresentam-se pouco utilizadas. Exemplos:

(1) Índice com fragmentação Externa <=> as páginas estão desordenadas (1-2-2-5-4...)

1 aabb .. .d.
2m5kkk
dkk mdm
d,,ddfdf

                  
3
mmh uyu
yt76nbi
jufmdfdf
mr9fdfdf


2
mmh uyu
yt76nbi dd
jufm df yrt
mr9fdf rr


5
aabb .. .d.
2m5kkk re
dkk mdm t
d,,d u juu

4

mmh uyu
yt76nbi df
jufm tu uua
mr9f yy red

(2) Índice com fragmentação Interna <=> páginas sub-utilizadas, com muito espaço disponível

1
aabb .. .d.

                  
2
m


3

yuu


4
aabb .. .d.

2m5kkk re

5

mmh

Tanto a fragmentação externa quanto interna irão requerer um custo maior de I/O para operações de leitura. Após um processo de desfragmentação desse índice, reverteríamos esse quadro para:

(1.1) Indice após desfragmentação externa

1
aabb .. .d.
2m5kkk
dkk mdm
d,,ddfdf

                  
2
mmh uyu
yt76nbi dd
jufm df yrt
mr9fdf rr


3
mmh uyu
yt76nbi
jufmdfdf
mr9fdfdf


4
mmh uyu
yt76nbi df
jufm tu uua
mr9f yy red

5

aabb .. .d.
2m5kkk re
dkk mdm t
d,,d u juu

(2.1) Indice após desfragmentação interna

1
aabb .. .d.
m
yuu
aabb .. .d.

                  
2
2m5kkk re
mmh

Repare que um processo de leitura seqüencial nos dois modelos é bem mais eficiente após desfragmentação: em (1.1) as páginas estão dispostas sequencialmente, evitando-se o vai-e-vem dos cabeçotes de leitura que ocorriam em (1); em (2.1) o número de páginas do índice caiu para duas páginas, o que reduz consideravelmente o custo de I/O envolvido numa operação de leitura.

Agora como saber se um índice está fragmentado? A resposta está no comando DBCC ShowContig. Esse comando deve ser executado sobre uma tabela, especificando-se o índice que se deseja analisar.

Primeiramente temos que levantar os índices da tabela que desejamos analisar. Para verificar os índices existentes na tabela Orders no database NorthWind com o comando sp_HelpIndex:

Agora que sabemos o nome dos índices podemos verificar a fragmentação do índice CustomerId.

Vamos agora traduzir o que o showcontig nos revelou:

Bom até agora constatamos um problema, e agora? A solução está em reestruturar o índice com o comando DBCC dbReindex. A reindexação corrige problemas de fragmentação externa E interna como veremos a seguir.

Compare os resultados dos comandos showcontig antes e depois da desfragmentação e sinta a diferença.

Por hoje é só.
Um grande abraço a todos e até a próxima!

 

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados