Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Banco 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:
Especifique uma dica de tabela de nível de isolamento , como SNAPSHOT, REPEATABLEREAD ou SERIALIZABLE.
Defina a opção da base de dados MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT como ATIVADA.
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.