A Microsoft está tornando cada vez mais fácil executar o SQL Server 2014 em uma máquina virtual do Azure em um dos dezessete data centers do Azure da Microsoft. Você pode executar uma máquina virtual pré-configurada com uma instância do SQL Server 2014 pré-configurada da galeria do Azure em sua escolha de qualquer tamanho de máquina virtual do Azure. Uma das opções da galeria é "SQL Server 2014 Enterprise Optimized for Transactional Workloads" em execução no Windows Server 2012 R2. Uma coisa legal sobre usar uma imagem de galeria pré-configurada é que você não precisa pagar por nenhuma licença do SQL Server 2014. Você simplesmente paga o custo por hora da edição do SQL Server e do tamanho da máquina virtual que você escolher.
Opções de configuração do SQL Server 2014
A Microsoft explica que "Esta imagem Enterprise Edition é otimizada para cargas de trabalho OLTP e destina-se a tamanhos de VM, incluindo A4, A7, A8 e A9. Uma vez implantada, a VM vem com Espaços de Armazenamento do Windows pré-configurados". A Microsoft também faz alguns trabalhos de configuração em nível de instância no SQL Server 2014, embora não vá longe o suficiente com o que eu consideraria como práticas recomendadas padrão.
Eles criam oito arquivos de dados tempdb com 25600 MB de tamanho, com um incremento de crescimento automático de 1024 MB, que é uma boa opção padrão. Eles também habilitam TF1117 e TF1118 como sinalizadores de rastreamento de inicialização, que também são boas opções para o SQL Server. Por fim, a Microsoft também permite a inicialização instantânea de arquivos e bloqueio de páginas na memória do sistema operacional, com o qual também concordo.
Eu preferiria que a Microsoft também fizesse algumas alterações nessas opções de configuração no nível da instância:
- padrão de compactação de backup
- limite de custo para paralelismo
- grau máximo de paralelismo
- memória máxima do servidor (MB)
- otimize para cargas de trabalho ad hoc
A compactação de backup deve ser habilitada por padrão na maioria dos casos. O limite de custo para paralelismo geralmente deve ser aumentado para um valor mais alto que o padrão de 5, dependendo de sua carga de trabalho. O grau máximo de paralelismo geralmente deve ser alterado para um valor não padrão com base no número de núcleos em um nó NUMA. Essa configuração também depende de sua carga de trabalho. A memória máxima do servidor deve ser definida como um valor não padrão com base na quantidade de RAM na máquina virtual e no que você está executando (além do mecanismo de banco de dados do SQL Server) na VM. Por fim, acho que a otimização para cargas de trabalho ad hoc deve ser habilitada, praticamente em todos os casos.
Em defesa da Microsoft, seria difícil fazer uma escolha de configuração satisfatória para alguns desses itens sem conhecer (com antecedência) os detalhes do tamanho da VM e a carga de trabalho esperada do servidor de banco de dados. Isso deixa a tarefa para você, assim como com uma instância do SQL Server local.
Dimensionamento da máquina virtual do Azure
Mesmo que você possa escolher qualquer coisa, de uma máquina A0 Basic a uma máquina A9 Standard, a Microsoft recomenda que você escolha uma máquina virtual de tamanho A4 Standard, A7 Standard, A8 Standard ou A9 Standard para uso em produção. Os detalhes de preços das máquinas virtuais do SQL Server estão listados aqui.
Observando as especificações comparativas dessas recomendações na Tabela 1, é difícil entender por que você escolheria uma máquina padrão A4, já que custa o mesmo valor por hora que as máquinas padrão A7 ou A8 maiores. Olhando para a documentação online, inicialmente não está muito claro qual é a diferença real entre uma máquina A7 e uma máquina A8 Standard. Indo um pouco mais fundo, a máquina A8 Standard é considerada uma instância Compute Intensive, que deve usar um processador Intel Xeon E5-2670 de 2,6 GHz mais rápido, juntamente com dois adaptadores de rede (um de 10 Gbps e um de 32 Gbps RDMA).
A máquina virtual A7 Standard usa um processador Intel Xeon E5-2660 de 2,2 GHz um pouco mais lento, enquanto a conectividade de rede parece ser Ethernet de 1 Gbps padrão. Embora isso pareça uma diferença significativa no desempenho do processador e da rede, não é realmente o principal problema com as máquinas virtuais da série A para uso do SQL Server.
Tamanho da VM | Taxa padrão SQL | Taxa do SQL Enterprise | Contagem de núcleos | Quantidade de RAM |
---|---|---|---|---|
Padrão A4 | US$ 0,80/h | US$ 3,00/h | 8 | 14 GB |
Padrão A7 | US$ 0,80/h | US$ 3,00/h | 8 | 56 GB |
Padrão A8 | US$ 0,80/h | US$ 3,00/h | 8 | 56 GB |
Padrão A9 | US$ 1,60/h | US$ 6,00/h | 16 | 112 GB |
Tabela 1:Informações da máquina virtual do SQL Server Série A
O principal problema com todas as máquinas virtuais da série A é o desempenho bastante miserável do subsistema de E/S, embora a Microsoft tenha pré-configurado o subsistema de disco com os Espaços de Armazenamento do Windows para obter o melhor desempenho possível, dadas as limitações de desempenho inerentes do A- máquinas virtuais e hosts da série. A Figura 1 mostra os resultados do CrystalDiskMark para a unidade E:de uma máquina A4 Standard do data center East US Azure, que se destina a arquivos de log de transações.
Figura 1:Resultados do CrystalDiskMark padrão A4
Uma alternativa muito melhor para o SQL Server são as máquinas virtuais da série D. Essas máquinas virtuais custam o mesmo por hora que as máquinas virtuais da série A de tamanho comparável e têm armazenamento SSD local que deve ser usado apenas para arquivos tempdb e/ou de extensões de pool de buffer (BPE), pois não são persistentes. Algumas especificações relevantes para máquinas virtuais da série D são mostradas na Tabela 2.
Tamanho da VM | Taxa padrão SQL | Taxa do SQL Enterprise | Contagem de núcleos | Quantidade de RAM |
---|---|---|---|---|
Padrão D4 | US$ 0,80/h | US$ 3,00/h | 8 | 28 GB |
Padrão D13 | US$ 0,80/h | US$ 3,00/h | 8 | 56 GB |
Padrão D14 | US$ 1,60/h | US$ 6,00/h | 16 | 112 GB |
Tabela 2:informações da máquina virtual do SQL Server da série D
A máquina D4 Standard custa o mesmo que uma máquina A4 Standard, mas tem o dobro de RAM e algum armazenamento SSD local. A máquina D13 Standard custa o mesmo que uma máquina A7 ou A8 Standard, mas com o benefício do armazenamento SDD local. A máquina D14 Standard custa o mesmo que uma máquina A9 Standard, mas também tem o benefício do armazenamento SSD local. Dadas essas informações, faz pouco sentido usar uma máquina virtual da série A para o SQL Server.
Infelizmente, as unidades permanentes para seus dados e arquivos de log do SQL Server também têm desempenho de E/S bastante abaixo do padrão no CrystalDiskMark, conforme mostrado nas Figuras 2 e 3.
Figura 2:Resultados do CrystalDiskMark padrão D14 | Figura 3:Resultados do CrystalDiskMark padrão D14 |
O desempenho do SSD local está relacionado ao tamanho da máquina virtual do Azure, com tamanhos maiores obtendo melhor desempenho do SSD local. Os resultados de desempenho do CrystalDiskMark para uma máquina D14 Standard no data center East US Azure são mostrados na Figura 4.
Figura 4:Resultados do CrystalDiskMark padrão D14 para armazenamento SSD local
A unidade F:(para arquivos de dados do SQL Server) tem resultados ligeiramente melhores que a unidade E:, mas ambas as unidades têm um nível de desempenho muito baixo para o SQL Server.
Conclusão
Parece bastante claro que as máquinas da série D são melhores para o uso do SQL Server do que as máquinas da série A. Também faz sentido prestar muita atenção ao dimensionamento e preço da máquina virtual que você decide provisionar para o SQL Server, pois você pode obter mais RAM pelo mesmo custo por hora. As duas melhores opções do ponto de vista do desempenho são as máquinas virtuais D13 ou D14 Standard.
As instâncias pré-configuradas do SQL Server 2014 da galeria do Azure podem economizar muito dinheiro nos custos de licenciamento do SQL Server e têm grande parte do trabalho de configuração necessário já concluído na imagem base. Você ainda deve entrar e fazer algumas alterações finais na configuração com base em sua preferência e carga de trabalho. Por fim, você deve dedicar um tempo para executar alguns benchmarks de desempenho em sua máquina virtual para entender o nível de desempenho que ela pode oferecer.