Banco de Dados

3 mai, 2019

Desempenho do processador x desempenho do SQL Server – Parte 01

Publicidade

A CPU é um dos recursos mais fundamentais – senão o mais fundamental – de um computador. É ali que todos os recursos são coordenados. Partindo disso, lhes apresento este primeiro artigo, de mais uma série, onde aprenderemos conceitos básicos sobre velocidade de CPU e como podemos usar isso para análises simples em consultas de um SQL Server.

Hoje vamos obter um conhecimento fundamental sobre CPU antes de partir para o SQL Server!

Clocks e Hertz

Você já deve estar cansado de ver os termos 2.5 GHz, 3.0 GHz, etc. Mas você sabe, de fato, o que eles significam? Embora eu precise de uma série exclusiva somente para este assunto, é necessário um simples entendimento:

  • Quanto maior este valor, mais rápidamente as instruções são executadas.

Basicamente, toda CPU tem um “clock“, que é um dispositivo que “liga” e “desliga” X vezes por segundo. Cada vez que esse dispositivo “liga”, nós dizemos que houve um “clock tick”, ou, apenas “tick”. Esse é o valor que você vê nas especificações:

  • Um processador de 1 Hertz (1 Hz) significa que seu clock liga e delisga uma vez por segundo (um tick por segundo)
  • 1000 Hertz, são 1000 ticks por segundo. Aqui se pode aplicar as unidades do SI (Sistema Internacional de Medidas): 1000 Hertz = 1 KHz (Kilo Hertz)
  • 1 milhão de Hertz, ou 1 MHz, significa 1 milhão de ticks por segundo
  • 2.5 GHz (Giga Hertz) , significa 2.5 x 1 bilhão (Giga), que equivale a 2 bilhões e 500 milhões de vezes por segundo

Uma vez que a velocidade do processador dita quantos ticks temos em um segundo, podemos então calcular quanto tempo dura um tick. Pode parecer confuso o que eu vou dizer agora, mas é apenas uma questão de lógica, pare e reflita.

Cada tick do clock leva um tempo fixo. Nenhum tick leva mais ou menos tempo que o outro tick. Então, quanto mais lento o processador, maior será o tempo de 1 tick. Pense em números pequenos, que vai ajudar:

  • Em um processador de 2 Hertz (dois ticks por segundo), cada tick leva 500 ms (0.5 segundos)
  • Em um processador de 4 Hertz (quatro ticks por segundo), cada tick leva 250 ms ( 0.250 segundos)
  • Percebeu a fórmula mágica pra calcular o tempo de 1 tick?
  • Tempo de um tick, em milssegundos = 1000ms/<Número Hertz>
  • 2.5 MHz = 1000/2500000 = 0,0004 ms (1 tick = 400 nanossegundos)
  • 1.0 MHz = 1000/1000000 = 0,001 (1 tick = 1000 nanossegundos)
  • 2.5 GHz resulta num tick muito pequeno! Faça as contas

As instruções que um processador pode executar gastam n ticks. Isso porque, grosseiramente falando, cada vez que o clock liga, ele aciona certos circuitos e sincroniza o processador com a placa mãe, etc. Isso vai depender de cada processador, e de cada instrução.

A velocidade da CPU dita o tempo de cada instrução:

Em uma CPU fictícia de 2 Hz, uma instrução que gastasse um tick, demoraria 500 ms para executar. Uma instrução que custasse dois ticks, levaria um segundo, e assim por diante.

Por que saber de tudo isso é importante?

Quando você traz esses conceitos para o sistema operacional e para os seus programas, como o SQL server, fica fácil entender certas coisas. No caso de uma simples consulta SQL, você tem centenas de milhares de instruções executando. Por exemplo, uma query como esta:

SELECT SUM(Valor) FROM Pedidos

Pode causar a execução de milhares de instruções. Vai depender da quantidade de registros, tamanho, concorrência, etc. A questão é que, no final das contas, tudo se resume ao que a CPU irá fazer.

Entender a velocidade do seu processador vai te ajudar a compreender certos “fenômenos” e até planejar melhor seu ambiente. Imagine como esta query seria afetada se o tempo de cada instrução dobrasse.

No próximo artigo vou mostrar todos estes conceitos na prática, quando você executa uma query no SQL Server!

Agradeço ao Luiz Vitor pelas indicações de correção no artigo e ao José Diz pelas dicas, principalmente sobre o sistema internacional de medidas.

Até mais!