네이티브 컴파일 관리자
적용 대상: 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;