Série – Melhores Práticas e Recomendações – Performance do SQL Server em Máquinas Virtuais no Azure – Parte 2

Posted on junho 1, 2017

3


No artigo anterior da série – SQL Server em Máquinas Virtuais – Redução de Custo de Infraestrutura falamos sobre práticas para economia de recursos dentro do Microsoft Azure, nesse artigo iremos falar sobre melhores práticas de performance do SQL Server.

Introdução

Assim como qualquer SQL Server instalado, devemos realizar e configurar o mesmo com as melhores práticas de mercado para SQL Server, e essa tarefa pode se alongar um pouco mais quando falamos de colocar máquinas virtuais em um service provider – Microsoft Azure nesse caso, porém as práticas de SQL Server se aplicam para Google Cloud ou Amazon AWS também e sendo assim, iremos entender quais configurações precisamos estar atentos para tirar o melhor do SQL Server.

Image result for performance iconPerformance do SQL Server em Máquinas Virtuais no Azure

Série e Modelo de Máquina Virtual [VM]

Microsoft Azure oferece uma grande variedade de máquinas virtuais para cada tipo de necessidade e aplicação, com isso, as mesmas são divididas por séries, recomendo que antes de planejar para migrar seu ambiente ou projeto verifique em qual melhor categoria suas necessidades se encaixam, verifique aqui as séries disponíveis – https://azure.microsoft.com/en-us/pricing/details/virtual-machines/series/ 

Para SQL Server, utilizamos como ponto de início para servidores de produção as DSv2-series.

series_sql_server

Um ponto de atenção aqui é, geralmente para melhorar performance do SQL Server nas máquinas virtuais utilizamos a tecnologia do Windows Server chamada Storage Pools para criar discos em RAID 0, porém sempre verifiquem a quantidade de IOPS por máquina, dependendo da máquina você pode estar sendo limitado pela quantidade de IOPS total da máquina virtual.

Premium Storage

Para servidores de produção, a única forma de conseguir uma boa escalabilidade e tempo de resposta do subsistema de IO é utilizando o premium storage do Azure. O premium storage irá garantir que os discos serão sempre em SSD-Based, sendo assim o tempo de resposta será mais rápido – https://docs.microsoft.com/en-us/azure/storage/storage-premium-storage 

Otimização do TempDB

Quando uma máquina é provisionada, um disco D:\ chamado de “Temporary Disk” é disponibilizado na máquina virtual, para séries a partir da D ou Dv2 e G podemos utilizar esse disco para colocar os arquivos do TempDB, além disso se sua instância de SQL Server é uma Read-Intensive recomendo utilizar o Buffer Pool Extension – https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/buffer-pool-extension e colocar nesse disco também, tenho tido resultados muito favoráveis.

Política de Cache [Caching Policy] 

Na criação de um disco dentro da máquina virtual, você possui a habilidade de especificar o que chamamos de “Caching”, sendo assim para discos que iram possuir os arquivos de dados .mdf e TempDB habilite o Read Caching. Para discos que iram ter arquivos de log ldf do SQL Server não habilite, deixe como NONE.

lun_sql_server

Discos em RAID 0 – Striped

RAID 0 também conhecido como “Disk Stripping”, nesse tipo de configuração, os dados são subdivididos em segmentos consecutivos que são escritos sequencialmente através de cada um dos discos no array, sendo assim a velocidade de escrita é aumentada, nesse caso quanto mais discos envolvidos mais será rápido o tempo de resposta do disco.

Para usar essa tecnologia a seu favor com Azure, use esse guia prático – http://t-sql.dk/?p=1646 

Page Locks in Memory – LPIM e Instant File Initialization – IFI

Page Locks In Memory = https://www.simple-talk.com/sql/database-administration/great-sql-server-debates-lock-pages-in-memory/ 

Instant File Initialization = https://docs.microsoft.com/en-us/sql/relational-databases/databases/database-instant-file-initialization

Próximo Post – Estratégia de Backup de VMs e SQL Server