Orientador de compilação nativa

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

Os relatórios de Análise de desempenho de transação informa sobre quais procedimentos armazenados interpretados no banco de dados serão beneficiados se usarem a compilação nativa. Para obter detalhes, veja Determinando se uma tabela ou um procedimento armazenado deve ser movido para o OLTP in-memory.

Depois de identificar um procedimento armazenado que você gostaria de ser aprovado para usar a compilação nativa, você pode usar o NCA (Native Compilation Advisor) para ajudar com a migração do procedimento armazenado interpretado para compilação nativa. Para obter mais informações sobre procedimentos armazenados nativamente compilados, consulte Natively Compiled Stored Procedures.

Em um determinado procedimento armazenado interpretado, o NCA permite a identificação de todos os recursos que não têm suporte em módulos nativos. O NCA fornece links de documentação para soluções ou soluções alternativas.

Para obter informações sobre as metodologias de migração, confira In-Memory OLTP – Common Workload Patterns and Migration Considerations(OLTP in-memory – Padrões comuns de carga de trabalho e considerações de migração).

Passo a passo usando o orientador de compilação nativa

No Pesquisador de Objetos, clique com o botão direito do mouse no procedimento armazenado que você quer converter e escolha Native Compilation Advisor. Isso exibirá a página de boas-vindas para o Orientador de Compilação Nativa de Procedimento Armazenado. Clique em Avançar para continuar.

Validação de procedimento armazenado

Essa página relatará se o procedimento armazenado usar alguma construção que não seja compatível com compilação nativa. Você pode clicar em Avançar para ver detalhes. Se houver construções que não sejam compatíveis com compilação nativa, você poderá clicar em Avançar para ver detalhes.

Resultado de validação de procedimento armazenado

Se houver construções que não sejam compatíveis com compilação nativa, a página Resultado de Validação de Procedimento Armazenado exibirá detalhes. Você pode gerar um relatório (clique em Gerar Relatório), saia do Supervisor de Compilação Nativae atualize seu código de forma que seja compatível com a compilação nativa.

Exemplo de código

O exemplo a seguir mostra um procedimento armazenado interpretado e o procedimento armazenado equivalente para compilação nativa. O exemplo supõe um diretório chamado c:\data.

Observação

Como de costume, o elemento FILEGROUP e a instrução mydatabase USE se aplicam ao Microsoft SQL Server, mas não ao Banco de Dados SQL do Azure.

CREATE DATABASE Demo  
ON  
PRIMARY(NAME = [Demo_data],  
FILENAME = 'C:\DATA\Demo_data.mdf', size=500MB)  
, FILEGROUP [Demo_fg] CONTAINS MEMORY_OPTIMIZED_DATA(  
NAME = [Demo_dir],  
FILENAME = 'C:\DATA\Demo_dir')  
LOG ON (name = [Demo_log], Filename='C:\DATA\Demo_log.ldf', size=500MB)  
COLLATE Latin1_General_100_BIN2;  
go  
  
USE Demo;  
go  
  
CREATE TABLE [dbo].[SalesOrders]  
(  
     [order_id] [int] NOT NULL,  
     [order_date] [datetime] NOT NULL,  
     [order_status] [tinyint] NOT NULL  
     CONSTRAINT [PK_SalesOrders] PRIMARY KEY NONCLUSTERED HASH   
(  
     [order_id]  
) WITH ( BUCKET_COUNT = 2097152)  
) WITH ( MEMORY_OPTIMIZED = ON )  
go  
  
-- Interpreted.  
CREATE PROCEDURE [dbo].[InsertOrder] @id INT, @date DATETIME2, @status TINYINT  
AS   
BEGIN   
  INSERT dbo.SalesOrders VALUES (@id, @date, @status);  
END  
go  
  
-- Natively Compiled.  
CREATE PROCEDURE [dbo].[InsertOrderXTP]  
      @id INT, @date DATETIME2, @status TINYINT  
  WITH NATIVE_COMPILATION, SCHEMABINDING, EXECUTE AS OWNER  
AS   
BEGIN ATOMIC WITH   
     (TRANSACTION ISOLATION LEVEL = SNAPSHOT, LANGUAGE = N'us_english'  
     )  
  INSERT dbo.SalesOrders VALUES (@id, @date, @status);  
END  
go  
  
SELECT * from SalesOrders;  
go  
  
EXECUTE dbo.InsertOrder @id= 10, @date = '1956-01-01 12:00:00', @status = 1;  
EXECUTE dbo.InsertOrderXTP @id= 11, @date = '1956-01-01 12:01:00', @status = 2;  
  
SELECT * from SalesOrders;  

Confira também

Migrando para OLTP na memória
Requisitos para usar tabelas com otimização de memória