Partilhar via


Aceder às Tabelas Otimizadas para Memória Usando Transact-SQL Interpretado

Aplica-se a:SQL ServerBanco de Dados SQL do Azure

Com apenas algumas exceções, pode aceder a tabelas otimizadas para memória usando qualquer consulta Transact-SQL ou operação DML (selecionar, inserir, atualizar ou eliminar), lotes ad hoc e módulos SQL como procedimentos armazenados, funções de valor de tabela, gatilhos e visões.

Transact-SQL interpretado refere-se a blocos de Transact-SQL ou procedimentos armazenados diferentes de um procedimento armazenado compilado nativamente. O acesso Transact-SQL interpretado a tabelas otimizadas para memória é referido como acesso de interoperabilidade.

A partir do SQL Server 2016 (13.x), as consultas em Transact-SQL interpretadas podem analisar tabelas otimizadas para memória em paralelo, em vez de apenas em modo serial.

Tabelas otimizadas para memória também podem ser acedidas usando um procedimento armazenado compilado nativamente. Procedimentos armazenados compilados nativamente são recomendados para operações OLTP críticas de desempenho.

O acesso Transact-SQL interpretado é recomendado nestes cenários:

  • Consultas ad hoc e tarefas administrativas.

  • Consultas de relatórios, que normalmente utilizam construções não disponíveis em procedimentos armazenados compilados nativamente (como funções de janela, por vezes referidas como funções OVER).

  • Para migrar partes críticas de desempenho da sua aplicação para tabelas otimizadas para memória, com alterações mínimas (ou nenhumas) ao código da aplicação. Pode ser possível ver melhorias de desempenho ao migrar tabelas. Se depois migrar procedimentos armazenados para procedimentos armazenados compilados nativamente, poderá assistir a uma melhoria adicional no desempenho.

  • Quando uma instrução Transact-SQL não está disponível para procedimentos armazenados compilados nativamente.

No entanto, os seguintes construtores Transact-SQL não são suportados em procedimentos armazenados interpretados em Transact-SQL que acedem a dados numa tabela otimizada em memória.

Area Sem suporte
Acesso a tabelas TRUNCATE TABLE

MERGE (tabela optimizada para a memória como alvo)

Cursores dinâmicos e de keyset (estes degradam-se automaticamente para estática).

Acesso a partir de módulos CLR, usando a ligação contextual.

Referenciar uma tabela otimizada para memória a partir de uma vista indexada.
Base de dados cruzada Consultas entre bases de dados

Transações entre bases de dados

Servidores vinculados

Sugestões de Tabela

Para mais informações sobre dicas de mesa, veja. Sugestões de Tabela (Transact-SQL). O SNAPSHOT foi adicionado para suportar In-Memory OLTP.

As seguintes recomendações não são suportadas ao se aceder a uma tabela otimizada para memória utilizando Transact-SQL interpretado.

HOLDLOCK

PAGLOCK

READUNCOMMITTED

TABLOCKXX

IGNORE_CONSTRAINTS

READCOMMITTED

ROWLOCK

UPDLOCK

IGNORE_TRIGGERS

READCOMMITTEDLOCK

SPATIAL_WINDOW_MAX_CELLS = inteiro

XLOCK

NOWAIT

READPAST

TABLOCK

Ao aceder a uma tabela otimizada para memória a partir de uma transação explícita ou implícita usando Transact-SQL interpretado, deve fazer pelo menos uma das seguintes ações:

Um hint de nível de isolamento para a tabela não é necessário para tabelas otimizadas para memória acessadas por consultas em modo de auto-commit.

Ver também

Transact-SQL Suporte para In-Memory OLTP

Migrando para In-Memory OLTP