Share via


IOPS de Disco

Escrevi o último post sobre o conceito de latência de disco, que é uma das chaves para entender performance no SQL.

Ao invés de falar de latência, podemos calcular o número de operações por segundo. Por exemplo: se a latência de disco é de 1ms, então podemos efetuar 1000 operações/segundo. Se a latência subir para 20ms, então ficamos limitados a 50 operações/segundo. No indústria, costumamos falar IOPS (I/O por segundo) ao invés de operações/segundo.

  • Disco 7200 RPM – latência de 10ms = 100 IOPS
  • Disco 10000 RPM – latência de 7.5ms = 133 IOPS
  • Disco 15000 RPM – latência de 5ms = 175 IOPS
  • Disco SSD – latência de 0.1ms = 10000 IOPS

Embora o conceito de latência seja mais importante, normalmente falamos sobre a capacidade de IOPS. Note que todos esses números são valores médios e aproximados, podendo variar significativamente dependendo das variáveis (tamanho do bloco, leitura sequencial ou randômica, etc).

Dica: nunca acredite cegamente no material de marketing. Eles sempre utilizam os cenários favoráveis. Que pena que não posso colocar os exemplos aqui… mas existem casos bem enganosos.

Quando queremos criar um banco de dados com alta taxa de escrita, devemos minimizar o tempo de latência na gravação do log. Isso significa que quanto menor o tempo de latência ou maior o IOPS, melhor.

Até agora tratamos latência de disco e IOPS como sinônimos. Mas eles não são!

O tempo de latência depende exclusivamente da mídia onde o dado está armazenado. Por exemplo, não tem como um ambiente com discos magnéticos 15k RPM ter menor latência do que com discos SSD. Entretanto, é possível atingir um maior IOPS com discos magnéticos do que SSD. Pode não ser uma comparação justa, mas basta usar um conjunto com 100 discos magnéticos contra 1 SSD.

Assim, podemos dizer que a equação é IOPS = (1/latência) * (numero de discos).

Quando falamos de cenários de banco de dados, devemos usar as métricas:

  • Latência: disco de log (operações de escrita)
  • IOPS: discos de dados (operações de leitura)

É uma mudança sutil, mas engana muita gente!