De uma perspectiva do SQL Server
Em uma caixa do SQL Server, você preferencialmente testaria os discos com os seguintes parâmetros, dependendo de onde você armazenaria os arquivos MDF, NDF, LDF e TEMPDB:
Todos os discos (MDF, NDF, LDF, TEMPDB)
- Tamanho do pedido de transferência de 8 KiB
- 80% de taxa de leitura
- 95% de leituras aleatórias
- Tempo de aceleração 10 (para contornar o cache de armazenamento)
- Tamanho máximo do disco (4'000'000 setores = 2 GiB)
Discos gravados em série (LDF, TEMPDB)
- Tamanho do pedido de transferência de 8 KiB
- 20% de taxa de leitura (os logs e o TEMPDB exigem muita gravação)
- 0% de leituras aleatórias
- Tempo de aceleração 10 (para contornar o cache de armazenamento)
- Tamanho máximo do disco (4'000'000 setores = 2 GiB)
Disco de leitura serial (MDF, NDF)
64 KiB de leitura de extensão
- Tamanho da solicitação de transferência de 64 KiB
- Relação de leitura de 80% (os arquivos MDF e LDF são mais lidos a partir de)
- 0% de leituras aleatórias
- Tempo de aceleração 10 (para contornar o cache de armazenamento)
- Tamanho máximo do disco (4'000'000 setores = 2 GiB)
Leitura de 128 KiB
- Tamanho da solicitação de transferência de 128 KiB
- Relação de leitura de 80% (os arquivos MDF e LDF são mais lidos a partir de)
- 0% de leituras aleatórias
- Tempo de aceleração 10 (para contornar o cache de armazenamento)
- Tamanho máximo do disco (4'000'000 setores = 2 GiB)
256 KiB de leitura antecipada
- Tamanho da solicitação de transferência de 256 KiB
- Relação de leitura de 80% (os arquivos MDF e LDF são mais lidos a partir de)
- 0% de leituras aleatórias
- Tempo de aceleração 10 (para contornar o cache de armazenamento)
- Tamanho máximo do disco (4'000'000 setores = 2 GiB)
512 KiB de leitura antecipada
- Tamanho da solicitação de transferência de 512 KiB
- Relação de leitura de 80% (os arquivos MDF e LDF são mais lidos a partir de)
- 0% de leituras aleatórias
- Tempo de aceleração 10 (para contornar o cache de armazenamento)
- Tamanho máximo do disco (4'000'000 setores = 2 GiB)
1024 KiB de leitura antecipada (Enterprise Edition)
- Tamanho da solicitação de transferência de 1024 KiB
- Relação de leitura de 80% (os arquivos MDF e LDF são mais lidos a partir de)
- 0% de leituras aleatórias
- Tempo de aceleração 10 (para contornar o cache de armazenamento)
- Tamanho máximo do disco (4'000'000 setores = 2 GiB)
Você pode variar a porcentagem de leituras aleatórias para ver se seus resultados variam, mas descobri que os valores acima são um ótimo ponto de partida.
Artigo sobre práticas recomendadas do SQL Server (MSDN)
Test a combination of I/O sizes for read/write and sequential/random. For SQL-focused deployments, be sure to include I/O sizes of 8 KB, 64 KB, 128 KB, 256 KB & 1024 for sequential I/O. (Read-ahead can be up to 1024 KB when running SQL Server Enterprise Edition). For random I/O it is generally safe to focus only on 8-KB I/O.
Solução de problemas de E / S de disco lento no SQL Server (Blogs MSDN)
If you suspect you are experiencing poor disk performance you can use internal DMVs combined with a Performance Monitor collection to get a good picture of the health of the disk I/O subsystem and any latency SQL Server is experiencing from its poor performance.
Melhor desempenho do SQL Server (Monitor de Desempenho) Práticas (Brent Ozar)
In the Performance object dropdown, choose Physical Disk, and choose the “% Disk Time” counter. Notice that again on the right side window, we get multiple instances; this time, we get one per physical disk. In performance terms, physical disk means one disk shown in Computer Management’s Disk Management tool. One physical disk may have multiple partitions, each with its own drive letter, but for performance tuning, we want to know how hard that one physical disk is working.
This one “physical disk” may have a bunch of actual physical drives, like in RAID systems. However, Windows isn’t quite smart enough to know exactly how many drives are in the RAID array, so the term “physical disk” is a little misleading here.
Como examinar as latências do subsistema IO de dentro do SQL Server (SQLSkills)
Most SQL Server’s today are I/O bound – that’s a generally agreed-on statement by DBAs and consultants in the field. This means that the major factor in server performance is its ability to perform I/O operations quickly. If the I/O subsystem cannot keep up with the demand being placed on it, then the SQL Server workload will suffer performance problems.
Now, saying that, one trap that many people fall into is equating increased I/O subsystem latencies with poor I/O subsystem performance. This is often not the case at all. It’s usually the case that the I/O subsystem performs fine when the designed-for I/O workload is happening, but becomes the performance bottleneck when the I/O workload increases past the I/O subsystem design point. The I/O workload increase is what’s causing the problem, not the I/O subsystem – if you design an I/O subsystem to support 1000 IOPS (I/O operations per second – and making sure you’re using the right I/O size and the workload characteristics make sense to be defined in terms of the number of random IOPS) and SQL Server is trying to push 2000 IOPS, performance is going to suffer.