다음을 통해 공유


네이티브 컴파일 관리자

적용 대상: SQL Server Azure SQL 데이터베이스

트랜잭션 성능 분석 보고서는 네이티브 컴파일을 사용하도록 이식된 경우 데이터베이스의 해석된 저장 프로시저에 어떤 혜택이 있는지 알려줍니다. 세부 정보는 테이블 또는 저장 프로시저가 메모리 내 OLTP로 이식되어야 하는지 결정을 참조하세요.

네이티브 컴파일을 사용하도록 포팅하려는 저장 프로시저를 식별한 후에는 NCA(Native Compilation Advisor)를 사용하여 해석된 저장 프로시저를 네이티브 컴파일로 마이그레이션할 수 있습니다. 고유하게 컴파일된 저장 프로시저에 대한 자세한 내용은 Natively Compiled Stored Procedures를 참조하세요.

지정된 해석된 저장 프로시저에서 NCA를 사용하면 네이티브 모듈에서 지원되지 않는 모든 기능을 식별할 수 있습니다. NCA는 해결 방법 또는 솔루션에 대한 설명서 링크를 제공합니다.

마이그레이션 방법론에 대한 자세한 내용은 메모리 내 OLTP - 일반적인 워크로드 패턴 및 마이그레이션 고려 사항을 참조하세요.

네이티브 컴파일 관리자 사용 연습

개체 탐색기에서 변환할 저장 프로시저를 마우스 오른쪽 단추로 클릭하고 네이티브 컴파일 관리자를 선택합니다. 저장 프로시저 네이티브 컴파일 관리자시작 페이지가 표시됩니다. 다음 을 클릭하여 계속합니다.

저장 프로시저 유효성 검사

이 페이지에서는 저장 프로시저가 네이티브 컴파일과 호환되지 않는 구문을 사용하는지 보고합니다. 다음을 클릭하여 세부 정보를 볼 수 있습니다. 네이티브 컴파일과 호환되지 않는 구문이 있는 경우 다음을 클릭하여 세부 정보를 볼 수 있습니다.

저장 프로시저 유효성 검사 결과

네이티브 컴파일 과 호환되지 않는 구문이 있는 경우 저장 프로시저 유효성 검사 결과 페이지에 세부 정보가 표시됩니다. 보고서를 생성하고(보고서 생성 클릭) 네이티브 컴파일 관리자를 종료한 다음 네이티브 컴파일과 호환되도록 코드를 업데이트할 수 있습니다.

코드 예시

다음 샘플에서는 해석된 저장 프로시저와 네이티브 컴파일에 해당하는 저장 프로시저를 보여줍니다. 샘플에서는 c:\data라는 디렉터리를 가정합니다.

참고 항목

일반적으로 FILEGROUP 요소 및 USE mydatabase 문은 Microsoft SQL Server에 적용되지만 Azure SQL 데이터베이스에는 적용되지 않습니다.

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;  

참고 항목

메모리 내 OLTP로 마이그레이션
메모리 액세스에 최적화된 테이블 사용을 위한 요구 사항