OLTP na memória (otimização na memória)

Novidade no SQL Server 2014 (12.x), In-Memory OLTP pode melhorar significativamente o desempenho do aplicativo de banco de dados OLTP. In-Memory OLTP é um mecanismo de banco de dados com otimização de memória integrado ao mecanismo de SQL Server, otimizado para OLTP.

Máquina Virtual do Você deseja experimentar o SQL Server 2016 ? Inscreva-se no Microsoft Azure e, em seguida, acesse Aqui para criar uma Máquina Virtual com o SQL Server 2016 já instalado. Você pode excluir a Máquina Virtual quando terminar.

Para usar In-Memory OLTP, defina uma tabela altamente acessada como otimizada para memória. As tabelas com otimização de memória são totalmente transacionais, duráveis e são acessadas usando o Transact-SQL da mesma forma que as tabelas baseadas em disco. Uma consulta pode fazer referência a tabelas com otimização de memória e tabelas baseadas em disco. Uma transação pode atualizar dados tanto nas tabelas com otimização de memória quanto as baseadas em disco. Os procedimentos armazenados que só fazem referência a tabelas com otimização de memória podem ser compilados nativamente em código de computador para mais melhorias de desempenho. O mecanismo OLTP In-Memory foi projetado para uma simultaneidade de sessão extremamente alta para o tipo OLTP de transações orientadas de uma camada intermediária altamente dimensionada. Para isso, ele usa estruturas de dados livre de travas e controle de simultaneidade otimista de diversas versões. O resultado é uma baixa latência previsível de menos de um milissegundo e alta taxa de transferência com escala linear para transações de banco de dados. O ganho de desempenho real depende de muitos fatores, mas é comum uma melhoria de 5 a 20 vezes no desempenho.

A tabela a seguir resume os padrões de carga de trabalho que podem se beneficiar mais usando In-Memory OLTP:

Cenário de Implementação Cenário de Implementação Benefícios de In-Memory OLTP
Taxa de inserção de dados alta de várias conexões simultâneas. Basicamente armazenamento somente de acréscimo.

Não é possível continuar com a inserção de carga de trabalho.
Eliminar a contenção.

Reduzir registros de log.
Desempenho de leitura e escala com inserções e atualizações em lote periódicas. Operações de leitura de alto desempenho, especialmente quando cada solicitação de servidor tem várias operações de leitura para executar.

Incapaz de atender aos requisitos de aumento de escala.
Eliminar contenção quando novos dados chegam.

Recuperação de dados de latência mais baixa.

Minimizar o tempo de execução do código.
Processamento de lógica de negócios intensivo no servidor de banco de dados. Inserir, atualizar e excluir carga de trabalho.

Computação intensiva dentro de procedimentos armazenados.

Contenção de leitura e gravação.
Eliminar a contenção.

Minimizar o tempo de execução de código para uma latência reduzida e maior taxa de transferência.
Baixa latência. Exigir transações comerciais de baixa latência que as soluções típicas de banco de dados não podem realizar. Eliminar a contenção.

Minimizar o tempo de execução do código.

Execução de código de baixa latência.

Recuperação eficaz de dados.
Gerenciamento do estado da sessão. Inserção, atualização e pesquisas de pontos frequentes.

Carga de alta escala a partir de inúmeros servidores web sem monitoração de estado.
Eliminar a contenção.

Recuperação eficaz de dados.

Redução ou remoção opcional de E/S ao usar tabelas não duráveis

Para obter mais informações sobre cenários em que In-Memory OLTP resultará nos maiores ganhos de desempenho, consulte OLTP in-memory – Padrões comuns de carga de trabalho e considerações de migração.

O OLTP na memória aumentará mais o desempenho no OLTP com transações de execução curta.

Os padrões de programação que In-Memory OLTP melhorarão incluem cenários de simultaneidade, pesquisas de ponto, cargas de trabalho em que há muitas inserções e atualizações e lógica de negócios em procedimentos armazenados.

A integração com SQL Server significa que você pode ter tabelas com otimização de memória e tabelas baseadas em disco no mesmo banco de dados e consultar em ambos os tipos de tabelas.

No SQL Server 2014 (12.x), há limitações na área de superfície transact-SQL com suporte para In-Memory OLTP.

In-Memory OLTP obtém ganhos significativos de desempenho e escalabilidade usando:

  • Algoritmos otimizados para acessar dados residentes em memória.

  • Controle de simultaneidade otimista que elimina bloqueios lógicos.

  • Objetos livres de bloqueio que eliminam todas as travas e bloqueios físicos. Os threads que executam o trabalho transacional não usam bloqueios ou travas para o controle de simultaneidade.

  • Procedimentos armazenados compilados nativamente, os quais têm um desempenho significativamente melhor do que os procedimentos armazenados interpretados, ao acessar uma tabela com otimização de memória.

Importante

Algumas alterações de sintaxe em tabelas e procedimentos armazenados serão exigidas para usar a OLTP na memória. Para obter mais informações, veja Migrando para o OLTP in-memory. Antes de tentar migrar uma tabela baseada em disco para uma tabela com otimização de memória, leia Determinando se uma tabela ou procedimento armazenado deve ser portado para In-Memory OLTP para ver quais tabelas e procedimentos armazenados se beneficiarão In-Memory OLTP.

Nesta seção

Esta seção fornece informações sobre os seguintes conceitos:

Tópico Descrição
Requisitos para usar tabelas com otimização de memória Aborda os requisitos de hardware e software, e as diretrizes para usar tabelas com otimização de memória.
Usando OLTP na Memória em um Ambiente de VM Abrange o uso de OLTP na memória em um ambiente virtualizado.
Exemplos de código do OLTP in-memory Contém exemplos de código que mostram como criar e usar uma tabela com otimização de memória.
Memory-Optimized Tables Apresenta tabelas com otimização de memória.
Variáveis de tabela com otimização de memória Exemplo de código mostrando como usar uma variável de tabela com otimização de memória em vez de uma variável de tabela tradicional para reduzir o uso de tempdb.
Índices em tabelas com otimização de memória Incorpora índices com otimização de memória.
Procedimentos armazenados compilados nativamente Apresenta procedimentos armazenados compilados de modo nativo.
Gerenciando memória para OLTP in-memory Compreendendo e gerenciando o uso de memória no sistema.
Criando e gerenciando armazenamento para objetos com otimização de memória A aborda os arquivos delta e de dados, que armazenam informações sobre transações em tabelas com otimização de memória.
Backup, restauração e recuperação de tabelas com otimização de memória Discute backup, restauração e recuperação de tabelas com otimização de memória.
Suporte ao Transact-SQL para OLTP in-memory Discute o suporte do Transact-SQL para In-Memory OLTP.
Suporte de alta disponibilidade para bancos de dados do OLTP in-memory Discute grupos de disponibilidade e clustering de failover em In-Memory OLTP.
Suporte ao SQL Server para OLTP na memória Lista a sintaxe nova e atualizada, e os recursos que oferecem suporte a tabelas com otimização de memória.
Migrando para OLTP na memória Aborda como migrar tabelas baseadas em disco para tabelas com otimização de memória.

Mais informações sobre a OLTP na memória estão disponíveis em:

Consulte Também

Recursos de banco de dados