top of page
Posts do fórum
Sérgio Lessa
23 de mar. de 2023
In Linguagem de programação
Olá, Pessoal, Hoje gostaria de apresentar o Paralelismo e explicar melhor suas principais configurações dentro do SQL Server. Para começar, é importante entendermos o que é o Paralelismo no SQL. De maneira simples, podemos dizer que é quando uma query é dividida em pedaços menores, que serão distribuídos para diferentes processadores, diminuindo, assim, o esforço individual de um processador, e, idealmente, agilizando a velocidade de execução da query. Entendendo essa base podemos partir para a configuração do Cost Threshold for Parallelism e do MaxDOP. Cost Threshold for Parallelism Essa configuração é responsável por determinar se uma query está apta a utilizar o paralelismo e funciona da seguinte maneira. Toda query no SQL tem um custo, que é um valor baseado no I/O e no uso de CPU. O Cost Threshold atribui um valor mínimo de custo para que o Paralelismo possa acontecer. No exemplo abaixo, temos uma query com o custo estimado de 1300. Vemos que, ao utilizar um Cost Threshold inferior a esse valor, o SQL vai utilizar o paralelismo nessa consulta. Já ao configurarmos o Cost para ser maior que o custo da query, o SQL não irá considerar utilizar o Paralelismo. “Então qualquer query com custo maior que o Threshold vai utilizar o Paralelismo?" A resposta para essa pergunta é não. A configuração apenas permite que o SQL avalie a possibilidade de utilizar, nem sempre, rodar a query em paralelo irá obter melhor performance, há cenários que o SQL simplesmente não irá utilizar porque detectou isso, mas existem outros fatores que inibem de fato o uso do Paralelismo. Exemplos desses fatores são: Se o plano de execução é complexo o suficiente para que o uso do Paralelismo seja benéfico; Se a consulta precisa ser executada de forma sequencial (ou seja, não pode ser quebrada em pedaços menores e depois “colada”, como alguns operadores do plano de execução, operador “TOP”) Etc. Portanto, ao ver que uma query de custo maior que o Threshold não utilizou paralelismo, não necessariamente algo está errado, mas se você acredita que o paralelismo iria ajudar, seria legal entender o porquê e vê se existe outro caminho para rodar em paralelo. E para fazer a configuração desse valor é muito simples. O primeiro passo é ir à instância que queremos modificar. Botão direito na instância > “Properties”. Clique em “Advanced” no canto esquerdo. No fim da página temos a área de Parallelism. Clique em Cost Threshold for Parallelism e insira o valor desejado. Por recomendação da Microsoft, temos como base o valor padrão 5, mas o ideal é testar valores diferentes e ver como o seu servidor se comporta com esses valores. O valor 50 costuma ser um bom ponto de partida Max Degree of Parallelism Outra configuração que temos é o MaxDOP, que define o número máximo de processadores que podem ser usados em paralelo por uma query. Depois de configurado o Cost Threshold é importante também verificar o MaxDOP, se ele está configurado de maneira correta. Para isso, é importante entender algumas coisas sobre o MaxDOP: Ele é um valor que vai de 0 a 32.767 Sendo 0 o valor que permite que o SQL utilize todos os processadores disponíveis, não é recomendado o uso. Outros valores acima de 0 vão limitar a consulta para aquele número de CPUs (se configurar em 1 as queries do meu ambiente não irão rodar em paralelo) A recomendação da Microsoft a partir do SQL 2016 está representada na tabela abaixo. Agora que sabemos as recomendações podemos ir para o SQL configurar o MaxDOP. Botão Direito na sua instância e clique em “Properties”. Clique em “Advanced” no canto esquerdo. No fim da página temos a área de Parallelism, clique em Max Degree of Parallelism e insira o valor desejado. Conclusão Resumindo, no post de hoje, vimos paralelismo e suas configurações dentro do SQL Server, a quantidade de processadores que irá ser utilizada para uma query que rode em paralelo, e também os valores para que essa query possa rodar em paralelo. Lembrando que o intuito do post é apenas apresentar as funções, para que servem e algumas recomendações de configurações. O mais importante ainda é conhecer o servidor que está sendo configurado, se há a necessidade de alterar alguma configuração e se as recomendações da Microsoft apresentadas aqui são as melhores para o caso específico.
0
0
132
Sérgio Lessa
Mais ações
bottom of page