Discos dedicados de Dados e Log

 

Nas visitas a clientes, é muito comum ouvir perguntas sobre como otimizar a performance dos discos.

A primeira recomendação que fazemos é para manter os arquivos de Dados e Log em discos separados. Por exemplo:

  • Disco L: arquivos LDF (Log)
  • Disco R: arquivos MDF/NDF (Dados)
  • Disco S: arquivos MDF/NDF (Dados)
  • Disco T: arquivos MDF/NDF (Dados)

Em um disco de 15k RPM, o tempo médio de escrita é de 5,5ms. Se colocarmos o arquivo de Log em um disco dedicado, é possível obter tempos de 2ms por escrita!

Vamos aos cenários:
 

Cenário 1: Leitura de Arquivos de Dados

Consideramos as operações de leitura de dados, que cada hora é lida uma página diferente e em posição distinta no disco. Para cada requisição de leitura, será necessário posicionar no track e, em seguida, posicionar no setor.  

Operação: Leitura

Tempo (ms)

Posicionar o track

3,2

Posicionar o setor

2,0

Tempo Total

5,2

O tempo médio para a operação completar será de 5,2ms.

Cenário 2: Escrita no Transaction Log

As escritas no arquivo de transaction log são sequenciais. Isso significa que, após o primeiro posicionamento do cabeçote no track, as operações seguintes precisam apenas realizar o posicionamento de setor.
 

Operação: Escrita

Tempo (ms)

Posicionar o setor

2.0

Tempo Total

2.0

Por isso, dizemos que as escritas no transaction log tiram vantagem do fato de serem sequenciais e o tempo médio da operação é de apenas 2ms.

Cenário 3: Arquivos de Dados e Log no mesmo disco físico

Quando colocamos os arquivos de Data (MDF/NDF) e Log (LDF) no mesmo disco físico, observamos que o tempo de escrita em log aumenta para 5,5ms. Isso ocorre porque as operações de leitura/escritas são intercaladas e o cabeçote deve sempre ser reposicionado, deixando de tirar proveito do fato das escritas em log serem sequenciais.

Operação: Escrita

Tempo (ms)

Posicionar o track

3,5

Posicionar o setor

2,0

Tempo Total

5,5

Conclusão:

Nunca misture os arquivos de Dados e Log, porque há impacto direto no tempo de escrita do Transaction Log. Como observamos, toda operação de escrita terá a necessidade de reposicionar o cabeçote no track correto, aumentando o tempo de resposta.

Ao colocar o arquivo de Transaction Log em um disco dedicado, teremos uma performance otimizada para as escritas sequenciais.