Compartilhar via


Acessando tabelas com otimização de memória usando Transact-SQL interpretado

Com apenas algumas exceções, você pode acessar tabelas com otimização de memória usando qualquer consulta Transact-SQL ou operação DML (SELECT, INSERT, UPDATE ou DELETE), lotes ad hoc e módulos SQL, como procedimentos armazenados, funções de valor de tabela, gatilhos e exibições.

Transact-SQL interpretado refere-se a lotes transact-SQL ou procedimentos armazenados diferentes de um procedimento armazenado compilado nativamente. O acesso Transact-SQL interpretado a tabelas com otimização de memória é chamado de acesso de interoperabilidade.

As tabelas com otimização de memória também podem ser acessadas usando um procedimento armazenado compilado nativamente. Os procedimentos armazenados nativamente compilados são recomendados para operações OLTP de desempenho crítico.

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

  • Consultas ad hoc e tarefas administrativas.

  • As consultas de relatórios, que tipicamente usam construções não disponíveis em procedimentos armazenados nativamente compilados (como funções de janela).

  • Para migrar partes críticas de desempenho do aplicativo para as tabelas com otimização de memória, com alterações mínimas (ou não) do código do aplicativo. Potencialmente, você pode ver aprimoramentos de desempenho de tabelas de migração. Se então você migrar procedimentos armazenados para procedimentos armazenados nativamente compilados, talvez veja mais aprimoramento de desempenho.

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

Os constructos Transact-SQL a seguir não têm suporte em procedimentos armazenados Transact-SQL interpretados que acessam dados em uma tabela com otimização de memória.

Área Sem suporte
Acesso a tabelas TRUNCATE TABLE

MERGE (tabela com otimização de memória como destino).

Cursores de conjunto de chaves e dinâmicos (degradados automaticamente para estáticos).

Acesso dos módulos CLR, usando a conexão de contexto.

Referenciando uma tabela com otimização de memória de uma exibição indexada.
Entre bancos de dados Consultas de bancos de dados

Transações entre bancos de dados

Servidores vinculados

Dicas de tabela

Para obter mais informações sobre dicas de tabela, consulte. Dicas de tabela (Transact-SQL). O isolamento snapshot foi adicionado para dar suporte a In-Memory OLTP.

Não há suporte para as dicas de tabela a seguir ao acessar uma tabela com otimização de memória usando Transact-SQL interpretado.

HOLDLOCK IGNORE_CONSTRAINTS IGNORE_TRIGGERS NOWAIT
PAGLOCK READCOMMITTED READCOMMITTEDLOCK READPAST
READUNCOMMITTED ROWLOCK SPATIAL_WINDOW_MAX_CELLS = integer TABLOCK
TABLOCKXX UPDLOCK XLOCK

Ao acessar uma tabela com otimização de memória de uma transação explícita ou implícita usando Transact-SQL interpretado, você deve incluir uma dica de tabela de nível de isolamento, como SNAPSHOT, REPEATABLEREAD ou SERIALIZABLE, ou você pode usar MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT. Para obter mais informações, consulte Diretrizes para níveis de isolamento de transação com tabelas Memory-Optimized e opções ALTER DATABASE SET (Transact-SQL).

Observação

Uma dica de tabela de nível de isolamento não é necessária para tabelas com otimização de memória acessadas por consultas executadas no modo de confirmação automática.

Consulte Também

Suporte ao Transact-SQL para OLTP in-memory
Migrando para OLTP na memória