Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Vantagens de desempenho do SQL Server 2016 Enterprise Edition


Em 16 de novembro de 2016, a Microsoft anunciou algumas mudanças muito significativas para o SQL Server 2016 Standard Edition, que foram implementadas em SQL Server 2016 Service Pack 1 (compilação 13.0.4001.0). Muitos recursos muito úteis relacionados à programação que antes estavam disponíveis apenas na Enterprise Edition agora estarão disponíveis na Standard Edition (e também na Web Edition e até na Express Edition).

Depois de ter um aplicativo de banco de dados usando o SQL Server 2016 Standard Edition Service Pack 1 (ou mesmo uma edição inferior), você pode simplesmente realizar uma atualização de edição para Enterprise Edition para obter ainda mais escalabilidade e desempenho, aproveitando os limites de licença mais altos para soquetes , núcleos e memória na Enterprise Edition, conforme detalhado aqui.

Você também obterá muitos outros benefícios de desempenho intrínsecos presentes no Enterprise Edition, juntamente com várias melhorias de gerenciamento que tornam sua vida muito mais fácil como DBA.

Índices de armazenamento de colunas


Se você estiver usando índices Columnstore, obterá os seguintes benefícios de desempenho automaticamente ao usar o Enterprise Edition:
  • Empilhamento agregado: Esse recurso de desempenho geralmente oferece um ganho de desempenho de consulta 2X-4X ao enviar agregações de qualificação para o nó SCAN, o que reduz o número de linhas que saem desse iterador.
  • Construção/reconstrução do índice: A Enterprise Edition pode criar/reconstruir índices columnstore com vários núcleos de processador, enquanto a Standard Edition usa apenas um núcleo de processador. Isso tem um efeito bastante significativo nos tempos decorridos para essas operações, dependendo do seu hardware.
  • Agregados locais: O Enterprise Edition pode usar agregações locais para filtrar o número de linhas que saem de um nó SCAN, reduzindo a quantidade de trabalho que precisa ser feita pelos nós de consulta subsequentes. Você pode confirmar isso procurando o atributo “ActualLocallyAggregatedRows” no XML do plano de execução da consulta.
  • Otimizações de dados múltiplos de instrução única (SIMD): Esse recurso usa um conjunto de instruções de hardware que são capazes de processar uma matriz de dados em uma única instrução, acelerando drasticamente as operações agregadas. Essas instruções de hardware estão presentes em todos os processadores modernos (com suporte a AVX), mas são usadas apenas pela Enterprise Edition.
  • Empilhamento de Predicado de String: Esse recurso de desempenho pode melhorar o desempenho de consultas usando predicado(s) em colunas de string, enviando esses predicados para o nó SCAN. Isso pode reduzir bastante a quantidade de trabalho que precisa ser feita pelos nós subsequentes.
  • Grau de paralelismo: As consultas do modo de lote são limitadas a MAXDOP =2 na Standard Edition. A Enterprise Edition pode usar todos os núcleos presentes para a instância. Isso pode ser muito significativo em consultas maiores em hardware de servidor moderno e típico.
  • Limites de memória: O pool de objetos Columnstore é limitado a 32 GB por instância na Standard Edition. A Enterprise Edition não tem nenhuma limitação de memória para o pool de objetos Columnstore.

Para testar essas declarações de desempenho, executei alguns testes bastante simples no banco de dados Microsoft ContosoRetailDW em minha estação de trabalho Intel Core i7-6700K. Tenho duas instâncias nomeadas do SQL Server 2016 SP1 instaladas, uma usando Standard Edition e a outra usando Developer Edition (que é equivalente à Enterprise Edition).

Todas as configurações e propriedades de nível de instância e banco de dados são idênticas entre as duas instâncias, e os locais de arquivo de banco de dados de usuário e tempdb estão em diretórios separados no mesmo dispositivo de armazenamento flash separado para cada instância. O nível de compatibilidade do banco de dados foi alterado para 130 em ambos os casos, e a configuração e o hardware subjacentes do Windows são os mesmos para ambas as instâncias. A única diferença aqui é a edição de cada instância.

O primeiro teste é uma consulta simples (adaptada de Niko Neugebauer) que permite que o SQL Server 2016 use empilhamento agregado na tabela FactOnlineSales. Os resultados são mostrados na Tabela 1.
Edição Tempo decorrido (ms)
Edição padrão 30
Edição do desenvolvedor 1
Diferença horária 29
% de melhoria 96,7%

Tabela 1:comparação agregada de empilhamento

O próximo teste é cronometrar quanto tempo leva para construir um índice columnstore clusterizado na tabela FactOnlineSales de 12,6 milhões de linhas. Os resultados são mostrados na Tabela 2.
Edição Tempo decorrido (ms)
Edição padrão 42.197
Edição do desenvolvedor 14.384
Diferença horária 27.813
% de melhoria 65,9%

Tabela 2:Como criar comparação de índice de armazenamento de colunas em cluster

O próximo teste é cronometrar quanto tempo leva para reconstruir um índice columnstore clusterizado na mesma tabela FactOnlineSales. Os resultados são mostrados na Tabela 3.
Edição Tempo decorrido (ms)
Edição padrão 33.105
Edição do desenvolvedor 11.460
Diferença horária 21.645
% de melhoria 65,4%

Tabela 3:Reconstruindo a comparação de índice de armazenamento de colunas em cluster

O próximo teste é outra consulta simples que permite que o SQL Server 2016 use agregação local na tabela FactOnlineSales. Os resultados são mostrados na Tabela 4.
Edição Tempo decorrido (ms)
Edição padrão 122
Edição do desenvolvedor 83
Diferença horária 39
% de melhoria 32,0%

Tabela 4:comparação de agregação local

O próximo teste é outra consulta simples que permite que o SQL Server 2016 use empilhamento de predicado de string nas tabelas FactOnlineSales e DimPromotion. Os resultados são mostrados na Tabela 5.
Edição Tempo decorrido (ms)
Edição padrão 2.683
Edição do desenvolvedor 1.221
Diferença horária 1.466
% de melhoria 54,6%

Tabela 5:comparação de empilhamento de predicado de string

Estes são apenas alguns exemplos simples das vantagens de desempenho internas para índices Columnstore no SQL Server 2016 Enterprise Edition em comparação com o SQL Server 2016 Standard Edition no mesmo hardware. Se você quiser realmente mergulhar nos índices Columnstore (que pode ser um recurso muito eficaz para algumas cargas de trabalho), você deve marcar e ler a longa série de posts de Niko Neugebauer em columnstore.net.

Desempenho DBCC CHECKDB


Outra melhoria de desempenho de gerenciamento presente no SQL Server 2016 Enterprise Edition é o desempenho de DBCC CHECKDB. Na Standard Edition, o DBCC CHECKDB usa apenas um núcleo de processador, enquanto pode usar todos os núcleos disponíveis na Enterprise Edition. Esse comportamento é inalterado em relação às versões anteriores do SQL Server. O SQL Server 2016 permite restringir o número de núcleos que o DBCC CHECKDB pode usar com uma nova opção WITH (MAXDOP =x).

A execução de DBCC CHECKDB com a opção WITH PHYSICAL_ONLY em um banco de dados um pouco maior (cerca de 38 GB) que eu tenho produziu os resultados mostrados na Tabela 6.
Edição Tempo decorrido (ms)
Edição padrão 58.492
Edição do desenvolvedor 24.897
Diferença horária 33.595
% de melhoria 57,4%

Tabela 6:Comparação DBCC CHECKDB COM PHYSICAL_ONLY

A execução de um DBCC CHECKDB padrão no mesmo banco de dados gerou os resultados mostrados na Tabela 7.
Edição Tempo decorrido (ms)
Edição padrão 435.039
Edição do desenvolvedor 119.767
Diferença horária 315.272
% de melhoria 72,5%

Tabela 7:Comparação DBCC CHECKDB

Um fator muito importante no desempenho do DBCC CHECKDB é o desempenho de leitura sequencial de todos os LUNs nos quais os arquivos de dados do banco de dados estão localizados. Você pode verificar isso facilmente executando um comando BACKUP DATABASE em um dispositivo NUL (certificando-se de usar as opções COPY_ONLY e NO_COMPRESSION). Isso mostrará seu desempenho de leitura sequencial eficaz, conforme mostrado neste exemplo da minha estação de trabalho:
BACKUP DATABASE processou com sucesso 5048514 páginas em 16,115 segundos (2447,502 MB/s).
Lembre-se de que todos esses testes foram feitos em um único processador de desktop quad-core. Um servidor multisocket com muito mais núcleos de processador total mostrará ainda mais uma melhoria de desempenho em muitos desses testes.

O objetivo de tudo isso é mostrar alguns exemplos tangíveis das melhorias de desempenho que você pode ver, simplesmente atualizando do SQL Server 2016 Standard Edition SP1 para o SQL Server 2016 Enterprise Edition SP1, no mesmo hardware, sem fazer alterações no banco de dados ou no aplicativo . Esta lista não é exaustiva, pois há muitos outros benefícios também.