Casos do Dia a Dia – A Quantidade de Sockets pode afetar a performance do seu Banco de Dados?

Fala pessoal,

Você já parou para pensar se a Quantidade de Sockets pode afetar ou não a performance do seu Banco de Dados?

No post de hoje vamos falar sobre isso e vou compartilhar alguns casos do dia a dia! #gogogo


Edição SQL Server x Limitações:

Em primeiro lugar, o SQL Server possui algumas edições diferentes e elas possuem algumas limitações.

Segue abaixo o link da documentação oficial da Microsoft:

https://docs.microsoft.com/pt-br/sql/sql-server/editions-and-components-of-sql-server-version-15?view=sql-server-ver15

A edição Enterprise é a mais TOP de todas! Contudo, também é a mais cara (e muitooo mais cara), pois utiliza TODOS os recursos disponíveis no servidor. Essa edição pode ficar inviável financeiramente para empresas menores. =(

Já as demais edições ficam mais limitadas. Por exemplo, a edição Standard possui uma limitação de 4 sockets ou 24 processadores lógicos. Nos casos abaixo iremos considerar essa edição e ver os possíveis impactos.


CASO 1 – O SQL Server Standard Edition não utiliza todos os processadores lógicos da VM???

No primeiro caso, a VM (Virtual Machine) do cliente estava utilizando 6 sockets e 6 processadores lógicos, ou seja, cada socket possuía apenas um processador lógico OK.

Ao executar a query abaixo, verificamos que tinha dois processadores lógicos que não estavam VISÍVEIS para o SQL Server, isso devido a limitação de apenas 4 sockets da edição Standard!

“Eita Luiz, estou pagando a licença no servidor para 6 processadores lógicos e o SQL Server está utilizando apenas 4, é isso mesmo???”

Infelizmente sim e já encontramos essa situação algumas vezes nos clientes que atendemos aqui na Power Tuning.

Como Resolver???

Nesses casos, solicitamos para a INFRA do cliente fazer o ajuste na quantidade de sockets para utilizar no máximo 4. Depois disso, o SQL Server vai conseguir utilizar TODOS os processadores lógicos da VM. =)


CASO 2 – SQL Server Standard Edition utilizando mais de 24 processadores lógicos??? Como???

Nesse segundo caso a situação foi a seguinte:

O cliente tinha uma VM no Azure com o SQL Server Standard Edition utilizando 20 processadores lógicos, contudo os recursos dessa VM não estavam com uma boa performance para o ambiente que já tinha crescido demais nos últimos anos.

Com isso, o cliente fez um UPGRADE para uma nova VM também com o SQL Server Standard Edition, mas dessa vez utilizando 32 processadores lógicos. Aí eu te pergunto:

“Como a VM utiliza o SQL Server Standard Edition ele irá limitar apenas em 24 processadores lógicos, certo???”

Então, depende hehe. Nesse caso, a VM utilizada pelo cliente tinha uma configuração com Hyper-Threading e com isso conseguia utilizar mais do que 24 processadores lógicos.

Repare no print abaixo que o SQL Server conseguiu reconhecer todos os 32 processadores lógicos! WOW!!!

Não vou entrar em detalhes sobre o Hyper-Threading nesse post, mas deixo abaixo um link como referência:

https://docs.microsoft.com/en-us/azure/virtual-machines/sizes-memory


Conclusão:

Sempre que for analisar algum banco de dados, confira a versão do SQL Server e a Quantidade de Sockets, pois você pode estar desperdiçando dinheiro e performance ao não utilizar todos os processadores lógicos.

Lembre-se também que o Hyper-Threading pode te ajudar em alguns casos. #ficaadica


Espero que tenha gostado e que isso também possa ser útil no seu dia a dia. Até o próximo post!

Me siga no LinkedIn e YouTube para ficar por dentro das novidades.

Abraço,

Luiz Vitor França Lima

Consultor SQL Server

Deixe uma resposta