Topicos: MS SQL Server 2016
Publicado em 15/09/2017 por AdminEsta semana abordaremos uma das funcionalidades aperfeiçoadas nesta nova versão do SQL Server, o In Memory OLTP. Foram feitas melhorias neste recurso que está presente desde a versão 2014.
Se você ainda não visualizou quais as funcionalidades disponíveis do SQL Server 2016, recomendo começar lendo a Série MS Sql Server 2016 – Parte 1. Tem um vídeo bem detalhado sobre as features da nova ferramenta.
Vamos ao que interessa.
Esta nova funcionalidade, como dito anteriormente, presente desde a versão do MS SQL Server 2014, pode melhorar significativamente o desempenho do processamento transacional de seu banco de dados, tanto no carregamento de dados quanto na inserção de dados.
Um dos maiores problemas de performance está na escrita e leitura em disco dos registros transacionais. Sistemas que necessitam processar um grande número de instruções de INSERT simultaneamente, são grandes candidatos a utilizar esta funcionalidade.
Tabelas com otimização de memória (MEMORY_OPTIMIZED)
Ao criar uma tabela, podemos definir através da palavra-chave MEMORY_OPTIMIZED, que uma tabela terá otimização em memória. O processo é transparente para você pois a Engine do MS SQL irá gerenciar isso pra você.
O sistema coloca os dados da tabela em memória para melhorar o desempenho e diminuir operações em disco.
Módulos compilados nativamente
Uma das novidades para a nova versão do MS SQL é a compilação de blocos TSQL (Transaction SQL). Toda a vez que modificamos o estado do banco de dados (online), é compilado o bloco SQL, por exemplo e um procedure, quando executada pela primeira vez. A instrução NATIVE_COMPILATION faz com que o script tenha este comportamento.
Este é um dos recursos fantásticos da nova versão. Com apenas uma instrução, a saber MEMORY_OPTIMIZED na criação da tabela, o MS SQL Server irá colocar os dados dela em memória e gerenciar este serviço para você. Irá ficar transparente pois as instruções de INSERT, SELECT são as mesmas. Veja no script abaixo um exemplo da criação desta tabela:
Uma observação importante é que CREATE INDEX e DROP INDEX não podem ser executados em uma tabela com otimização de memória; em vez disso, use .ALTER TABLE.
Muitos são os ganhos de utilizar o recurso In Memory OLTP. Você deve considerar os recursos da maquina antes de decidir usar o mesmo. Para os demais itens aqui citados, vale a pena consultar o manual do SQL antes de aplicar no projeto e avaliar os ganhos que deseja adquirir. Em geral, o recurso irá ajudar e muito o desempenho de seu banco de dados.
Os exemplos aqui utilizados podem ser visualizados em meu repositório do GitHub.