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.