Atualizações e opções de configuração recomendadas para o SQL Server com cargas de trabalho de alto desempenho

Este artigo inclui uma lista de melhorias de desempenho e opções de configuração disponíveis para SQL Server 2012 e versões posteriores.

Versão original do produto: SQL Server 2014, SQL Server 2012
Número de KB original: 2964518

Este artigo descreve as melhorias e as alterações de desempenho disponíveis para SQL Server versões de 2014 e SQL Server 2012 por meio de várias atualizações de produto e opções de configuração. Você pode considerar a aplicação dessas atualizações para melhorar o desempenho da instância de SQL Server. O grau de melhoria que você vê dependerá de vários fatores que incluem padrão de carga de trabalho, pontos de contenção, layout do processador (número de grupos de processadores, soquetes, nós NUMA, núcleos em um nó NUMA) e quantidade de memória presente no sistema. SQL Server equipe de suporte usou essas atualizações e alterações de configuração para obter ganhos de desempenho razoáveis para cargas de trabalho do cliente que usavam sistemas de hardware que tinham vários nós NUMA e muitos processadores. A equipe de suporte continuará atualizando este artigo com outras atualizações no futuro.

Sistemas high-end Um sistema high-end normalmente tem vários soquetes, oito núcleos ou mais por soquete e meio terabyte ou mais de memória.

Observação

Nas versões SQL Server 2016 e posteriores, muitos dos sinalizadores de rastreamento mencionados neste artigo são o comportamento padrão e você não precisa habilitá-los nessas versões.

As recomendações são agrupadas em três tabelas da seguinte maneira:

  • A Tabela 1 contém as atualizações e sinalizadores de rastreamento mais recomendados para escalabilidade em sistemas high-end.
  • A Tabela 2 contém recomendações e diretrizes para ajuste adicional de desempenho.
  • A Tabela 3 contém correções de escalabilidade adicionais que foram incluídas junto com uma atualização cumulativa.

Tabela 1. Atualizações importantes e sinalizadores de rastreamento para sistemas high-end

Examine a tabela a seguir e habilite os sinalizadores de rastreamento na coluna Rastrear sinalizadores depois de verificar se sua instância de SQL Server atende aos requisitos na coluna Versão Aplicável e intervalos de build.

Observação

  • Versão e build aplicáveis indicam a atualização específica na qual o sinalizador de alteração ou rastreamento foi introduzido. Se nenhuma CU for especificada, todas as CU's no SP serão incluídas.

  • Não Aplicável Versão e build indica a atualização específica na qual o sinalizador de alteração ou rastreamento se tornou o comportamento padrão. Portanto, apenas aplicar essa atualização será suficiente para obter os benefícios.

Importante

Ao habilitar correções com sinalizadores de rastreamento em ambientes Always On, esteja ciente de que você precisa habilitar a correção e rastrear sinalizadores em todas as réplicas que fazem parte do Grupo de Disponibilidade.

Cenário e sintoma a serem considerados Sinalizador de rastreamento Intervalos de versão e build aplicáveis Intervalos de versão e build não aplicáveis Artigo/Blog da Base de Dados de Conhecimento que fornece mais detalhes
  • Você encontra esperas CMEMTHREAD altas.
  • SQL Server é instalado em sistemas com 8 ou mais núcleos por soquete.
T8048
  • SQL Server RTM 2012 para O Pacote de Serviço atual (SP)/CU
  • SQL Server RTM 2014 para SP1
  • SQL Server 2014 SP2 para SP/CU atual
  • SQL Server RTM 2016 ao SP/CU atual
  • SQL Server RTM 2017 ao SP/CU atual
  • Você encontra esperas CMEMTHREAD altas.
  • SQL Server é instalado em sistemas com 8 ou mais núcleos por soquete.
T8079 SQL Server 2014 SP2 para SP/CU atual
  • SQL Server RTM 2016 ao SP/CU atual
  • SQL Server RTM 2017 ao SP/CU atual
  • Você está usando recursos que dependem do cache do pool de logs. (por exemplo, Always On)
  • SQL Server é instalado em sistemas com vários soquetes.
T9024 Pacote de atualização cumulativo 3 para SQL Server Service Pack 1 a SP2 SQL Server 2014 RTM
  • SQL Server SP3 de 2012 para o SP/CUSQL atual
  • Servidor 2014 SP1 para SP/CU atual
  • SQL Server RTM 2016 ao SP/CU atual
  • SQL Server RTM 2017 ao SP/CU atual
CORREÇÃO: Alto valor do contador "esperas de gravação de log" em uma instância SQL Server 2012 ou SQL Server 2014
Sua instância de SQL Server está lidando com milhares de redefinições de conexão devido ao pool de conexões. T1236 Pacote de atualização cumulativo 9 para SQL Server Service Pack 1 a SP2 Cumulativo 1 para SQL Server 2014
  • SQL Server SP3 de 2012 para o SP/CUSQL atual
  • Servidor 2014 SP1 para SP/CUSQL atual
  • SERVIDOR 2016 RTM para SP/CU atual
  • SQL Server RTM 2017 ao SP/CU atual
  • A carga de trabalho do aplicativo envolve o uso frequente de tempdb (criação e queda de tabelas temporárias ou variáveis de tabela).
  • Você observa solicitações de usuário aguardando recursos de página tempdb devido à contenção de alocação.
T1118
  • SQL Server RTM 2012 para o SP/CU atual
  • SQL Server RTM 2014 ao SP/CU atual
  • SQL Server RTM 2016 ao SP/CU atual
  • SQL Server RTM 2017 ao SP/CU atual
Aprimoramentos de simultaneidade para o banco de dados tempdb

NOTA Habilite o sinalizador de rastreamento e adicione vários arquivos de dados para o banco de dados tempdb.
  • Você tem vários arquivos de dados tempdb.
  • Os arquivos de dados no início são definidos como do mesmo tamanho.
  • Devido à atividade pesada, os arquivos tempdb encontram crescimento e nem todos os arquivos crescem ao mesmo tempo e causam contenção de alocação.
T1117
  • SQL Server RTM 2012 para o SP/CU atual
  • SQL Server RTM 2014 ao SP/CU atual
  • SQL Server RTM 2016 ao SP/CU atual
  • SQL Server RTM 2017 ao SP/CU atual
Recomendações para reduzir a contenção de alocação no banco de dados tempdb SQL Server
A contenção de spinlock pesada SOS_CACHESTORE ou seus planos estão sendo despejados com frequência em cargas de trabalho de consulta ad hoc. T174 Nenhum
  • As entradas no cache do plano são despejadas devido ao crescimento em outros caches ou funcionários de memória
  • Alto consumo de CPU devido a recompiles frequentes de consultas
T8032
  • SQL Server RTM 2012 para o SP/CU atual
  • SQL Server RTM 2014 ao SP/CU atual
Nenhum
As estatísticas existentes não são atualizadas com frequência devido ao grande número de linhas na tabela. T2371
  • SQL Server RTM 2012 para o SP/CU atual
  • SQL Server RTM 2014 ao SP/CU atual
Nenhum
  • Os trabalhos de estatística levam muito tempo para serem concluídos.
  • Não é possível executar vários trabalhos de atualização de estatísticas em paralelo.
T7471 SQL Server 2014 SP1 CU6 para SP/CU atual Nenhum Aumentando o desempenho das Estatísticas de Atualização com o SQL 2014 & SQL 2016
O comando CHECKDB leva muito tempo para bancos de dados grandes.
  • T2562
  • T2549
    • SQL Server RTM 2012 para o SP/CU atual
    • SQL Server RTM 2014 ao SP/CU atual
    Nenhum
    O comando CHECKDB leva muito tempo para bancos de dados grandes. T2566
    • SQL Server RTM 2012 para o SP/CU atual
    • SQL Server RTM 2014 ao SP/CU atual
    Nenhum
    A execução de consultas simultâneas de data warehouse que levam muito tempo de compilação resulta em RESOURCE_SEMAPHORE_QUERY_COMPILE esperas. T6498 Pacote de atualização cumulativo 6 para SQL Server 2014 para SP1
    • SQL Server 2014 SP2 para o SP/CUSQL atual
    • SERVIDOR 2016 RTM para SP/CU atual
    • SQL Server RTM 2017 ao SP/CU atual
    Você está solução de problemas de desempenho de consulta específicos As correções do otimizador são desabilitadas por padrão. T4199
    • SQL Server RTM 2012 para SP4
    • SQL Server RTM 2014 para o mais recente
    Nenhum
    Você experimenta um desempenho lento usando operações de consulta com tipos de dados espaciais.
    • T6532
    • T6533
    • T6534
    • SQL Server SP3 de 2012 para o SP/CU atual
    • SQL Server 2014 SP2 para SP/CU atual
      • SQL Server RTM 2016 ao SP/CU atual
      • SQL Server RTM 2017 ao SP/CU atual
        • Encontro de consultas SOS_MEMORY_TOPLEVELBLOCKALLOCATOR e esperas CMEMTHREAD.
        • Há pouco espaço de endereço virtual disponível para o processo de SQL Server.
        T8075
        • SQL Server 2012 SP2 CU8 para SP/CU atual
        • SQL Server 2014 RTM CU10 para SP/CU atual
        • SQL Server RTM 2016 ao SP/CU atual
        • SQL Server RTM 2017 ao SP/CU atual
        CORREÇÃO: erro de memória fora quando o espaço de endereço virtual do processo de SQL Server é baixo em SQL Server
        • SQL Server é instalado em um computador com grandes quantidades de memória.
        • A criação de novos bancos de dados leva muito tempo.
        T3449
        • SQL Server 2012 SP3 CU3 para SP/CU atual
        • SQL Server 2014 RTM CU14 para o RTM CU atual
        • SQL Server 2014 SP1 CU7 para SP/CU atual
        • SQL Server RTM 2016 ao SP/CU atual
        • SQL Server RTM 2017 ao SP/CU atual
        CORREÇÃO: SQL Server criação de banco de dados em um sistema com um grande volume de memória leva mais tempo do que o esperado

        Tabela 2. Considerações gerais e práticas recomendadas para melhorar o desempenho de sua instância de SQL Server

        Examine o conteúdo na coluna Recurso da Base de Dados de Conhecimento/Livros Online e considere implementar as diretrizes na coluna Ações Recomendadas.

        Artigo da Base de Conhecimento/Recurso Books Online Ações recomendadas
        Configurar o grau máximo da opção de configuração do servidor de paralelismo Use o procedimento armazenado sp_configure para fazer alterações de configuração para configurar o grau máximo de paralelismo Opção de Configuração do Servidor para sua instância de SQL Server de acordo com o artigo base de dados de conhecimento.
        Limites de capacidade de computação por edição de SQL Server Edição Enterprise com o licenciamento de CAL (Licença de Acesso ao Cliente+ Servidor) é limitado a 20 núcleos por instância de SQL Server. Não há limites no modelo de licenciamento de servidor baseado em núcleo. Considere atualizar sua edição de SQL Server para a SKU apropriada para aproveitar todos os recursos de hardware.
        Desempenho lento no Windows Server ao usar o Plano de Energia "Balanceado" Examine o artigo e trabalhe com o administrador do Windows para implementar uma das soluções que são anotadas na seção "Resolução" do artigo.
        Atribua manualmente nós NUMA a grupos K.
        Otimizar para cargas de trabalho Ad hocFORCED PARAMETERIZATION As entradas no cache do plano são despejadas devido ao crescimento em outros caches ou funcionários de memória. Você também pode encontrar o despejo de cache do plano quando o cache atingir o número máximo de entradas. Além do sinalizador de rastreamento 8032 discutido acima, considere a opção otimizar para o servidor de cargas de trabalho ad hoc e também a opção de banco de dados DEMETRIZAÇÃO FORÇADA .
        Como reduzir a paginação da memória do pool de buffer em considerações de configuração e dimensionamento do SQL Server Memory em versões SQL Server 2012 e posteriores Atribua o usuário Habilitar as Páginas de Bloqueio na Opção de Memória (Windows) diretamente à conta de inicialização do serviço SQL. Consulte Como habilitar o recurso "páginas bloqueadas" no SQL Server 2012. Defina a memória máxima do servidor como aproximadamente 90% da memória física total. Verifique se as opções de configuração de memória do servidor configuram contas de memória somente dos nós configurados para usar configurações de máscara de afinidade.
        SQL Server e páginas grandes explicadas...Opções de ajuste para SQL Server ao executar em cargas de trabalho de alto desempenho Considere habilitar o TF 834 se você tiver um servidor com uma grande quantidade de memória, especialmente com uma carga de trabalho analítica ou de armazenamento de dados. Lembre-se de que o TF 834 não é recomendado se você estiver usando índices columnstore.
        Descrição das opções "acesso marcar contagem de buckets de cache" e "acesso marcar cota de cache" que estão disponíveis no procedimento armazenado sp_configure Use o acesso marcar cache Opções de Configuração do Servidor para configurar esses valores de acordo com as recomendações no artigo Base de Dados de Conhecimento. Os valores recomendados para sistemas high-end são os seguintes:
        "acesso marcar contagem de buckets de cache": 256
        "acesso marcar cota de cache": 1024

        ALTER WORKLOAD GROUPDicas de consulta de concessão de memória Se você tiver muitas consultas que estão esgotando grandes concessões de memória, reduza request_max_memory_grant_percent para o grupo de carga de trabalho padrão na configuração do governador do recurso dos 25% padrão para um valor menor. Novas opções de concessão de memória de consulta estão disponíveis (min_grant_percent e max_grant_percent) em SQL Server
        Inicialização de arquivo instantâneo Trabalhe com o administrador do Windows para conceder à conta de serviço SQL Server o usuário "Executar Tarefas de Manutenção de Volume" de acordo com as informações no tópico Livros Online.
        Considerações sobre as configurações "autogrow" e "autoshrink" no SQL Server Verifique as configurações atuais do banco de dados e verifique se elas estão configuradas de acordo com as recomendações no artigo Base de Dados de Conhecimento.
        Pontos de verificação de banco de dados (SQL Server) Considere habilitar pontos de verificação indiretos em bancos de dados de usuário para otimizar o comportamento de E/S em SQL Server 2012 e 2014.
        CORREÇÃO: Sincronização lenta quando os discos têm tamanhos de setor diferentes para arquivos de log de réplica primária e secundária em ambientes de ag e logshipping SQL Server Se você tiver um Grupo de Disponibilidade em que o log de transações no réplica primário estiver em um disco com tamanho do setor de 512 bytes e o log de transações do réplica secundário estiver em uma unidade com tamanho do setor 4K, você poderá ter um problema em que a sincronização é lenta. Nesses casos, a habilitação do TF 1800 deve corrigir o problema. Para obter mais informações, consulte Sinalizador de rastreamento 1800.
        Se o SQL Server ainda não estiver vinculado à CPU e uma sobrecarga de 1,5% a 2% for insignificante para suas cargas de trabalho, recomendamos habilitar o TF 7412 como um sinalizador de rastreamento de inicialização. Esse sinalizador permite uma criação de perfil leve no SQL Server 2014 SP2 ou posterior, o que lhe dará a capacidade de fazer a solução de problemas de consulta ao vivo em ambientes de produção.

        Tabela 3. Correções de desempenho incluídas em uma atualização cumulativa

        Examine a descrição na coluna Sintomas e aplique as atualizações necessárias na coluna atualização necessária em ambientes aplicáveis. Você pode examinar o artigo base de dados de conhecimento para obter mais informações sobre os respectivos problemas. Essas recomendações não exigem que você habilite sinalizadores de rastreamento adicionais como parâmetros de inicialização. Apenas aplicar a atualização cumulativa mais recente ou o Service Pack que inclui essas correções é suficiente para obter o benefício.

        Observação

        O nome CU na coluna atualização necessária fornece a primeira atualização cumulativa de SQL Server que resolve esse problema. Uma atualização cumulativa contém todos os hotfixes e todas as atualizações incluídas com a versão anterior SQL Server atualização. Portanto, recomendamos instalar a atualização cumulativa mais recente para resolve os problemas.

        Sintomas Atualização necessária Artigo base de dados de conhecimento
        Gravações ansiosas durante o Select-in para tabelas temporárias causam problemas de desempenho. SQL Server 2012 SP2 CU1
        SQL Server 2012 SP1 CU10
        CORREÇÃO: desempenho ruim na E/S ao executar a seleção em operação de tabela temporária no SQL Server 2012
        Você encontra PWAIT_MD_RELATION_CACHE ou MD_LAZYCACHE_RWLOCK aguarda após a anulação de uma ALTER INDEX ... ONLINE operação de consulta. SQL Server 2014 RTM CU1
        SQL Server 2012 SP1 CU9
        CORREÇÃO: O desempenho diminui após um ALTER INDEX... A operação ONLINE é anulada em SQL Server 2012 ou SQL Server 2014
        As consultas de repente têm um desempenho ruim na edição padrão do produto. SQL Server 2014 RTM CU1
        SQL Server 2012 SP1 CU7
        CORREÇÃO: Os threads não são agendados uniformemente no SQL Server 2012 ou SQL Server Standard Edition 2014
        Desempenho lento devido a uma queda repentina na expectativa de vida da página. SQL Server 2012 SP1 CU4 CORREÇÃO: você pode ter problemas de desempenho no SQL Server 2012
        Alto uso da CPU pelo monitor de recursos em sistemas com configuração NUMA, memória grande e "memória máxima do servidor" definida como um valor baixo. SQL Server 2012 SP1 CU3 CORREÇÃO: pico de CPU quando não houver carga em um servidor depois de instalar SQL Server 2012 no servidor
        O agendador sem rendimento durante a alocação de memória para execuções de classificação associou grandes concessões de memória em sistemas com grande quantidade de memória instalada. SQL Server 2012 SP1 CU2 CORREÇÃO: Erro 17883 ao executar uma consulta em um servidor que tem muitas CPUs e uma grande quantidade de memória em SQL Server 2012 ou em SQL Server 2008 R2
        Agendador sem rendimento quando o operador de classificação atravessa muitos buckets no pool de buffers em sistemas com memória grande. SQL Server 2012 SP1 CU1 CORREÇÃO: "O processo parece não estar rendendo na mensagem de erro agendador" quando você executa uma consulta no SQL Server 2012
        Alto uso de CPU ao executar consultas simultâneas que levam muito tempo para serem compiladas em sistemas com vários nós NUMA e muitos núcleos. SQL Server 2012 SP2 CU1
        SQL Server 2014 RTM CU2
        CORREÇÃO: A carga de trabalho de compilação de consulta intensa não é dimensionada com um número crescente de núcleos no hardware NUMA e resulta na saturação da CPU no SQL Server
        As alocações de memória para operadores de classificação levam muito tempo para serem concluídas em sistemas NUMA com memória grande devido a alocações de nó remoto. SQL Server 2012 SP1 CU3 CORREÇÃO: SQL Server problemas de desempenho em ambientes NUMA
        Erros de memória fora da memória quando SQL Server é instalado em um computador NUMA com grande quantidade de RAM e SQL Server tem muitas páginas estrangeiras. SQL Server 2012 RTM CU1 CORREÇÃO: erro fora da memória ao executar uma instância do SQL Server 2012 em um computador que usa NUMA
        Contenção de spinlock em SOS_CACHESTORE e SOS_SELIST_SIZED_SLOCK quando você cria um índice no tipo de dados espaciais em uma tabela grande. SQL Server 2014 RTM CU1
        SQL Server 2012 SP1 CU7
        CORREÇÃO: Desempenho lento no SQL Server 2012 ou SQL Server 2014 quando você cria um índice em um tipo de dados espaciais de uma tabela grande
        Alto tipo de espera CMEMTHREAD quando você cria um índice em um tipo de dados espaciais em tabelas grandes. SQL Server 2014 RTM CU1
        SQL Server 2012 SP1 CU7
        CORREÇÃO: Desempenho lento em SQL Server quando você cria um índice em um tipo de dados espaciais de uma tabela grande em uma instância SQL Server 2012 ou SQL Server 2014
        Problemas de desempenho devido a SOS_PHYS_PAGE_CACHE e CMEMTHREAD aguarda durante a alocação de memória em computadores de memória grande. SQL Server 2014 RTM CU1
        SQL Server 2012 SP1 CU9
        CORREÇÃO: Problemas de desempenho ocorrem em ambientes NUMA durante o processamento de página estrangeira no SQL Server 2012 ou SQL Server 2014
        O comando CHECKDB leva muito tempo para bancos de dados grandes. Pacote de atualização cumulativo 6 para SQL Server 2014 CORREÇÃO: O comando DBCC CHECKDB/CHECKTABLE pode demorar mais em SQL Server 2012 ou SQL Server 2014

        Notas importantes

        Referências

        Aplicável a

        • SQL Server 2014 Enterprise
        • SQL Server 2014 Enterprise Core
        • SQL Server 2014 Business Intelligence
        • SQL Server 2014 Developer
        • SQL Server 2014 Standard
        • SQL Server 2014 Web
        • SQL Server 2014 Express
        • SQL Server Business Intelligence 2012
        • SQL Server 2012 Developer
        • SQL Server 2012 Enterprise
        • SQL Server 2012 Standard
        • SQL Server 2012 Web
        • SQL Server 2012 Enterprise Core