Native Compilation Advisor
Berlaku untuk: SQL ServerAzure SQL Database
Laporan Analisis Performa Transaksi memberi tahu Anda prosedur tersimpan yang ditafsirkan dalam database Anda akan mendapat manfaat jika di-port untuk menggunakan kompilasi asli. Untuk detailnya, lihat Menentukan apakah Tabel atau Prosedur Tersimpan Harus Di-Port ke OLTP Dalam Memori.
Setelah mengidentifikasi prosedur tersimpan yang ingin Anda port untuk menggunakan kompilasi asli, Anda dapat menggunakan Native Compilation Advisor (NCA) untuk membantu Anda memigrasikan prosedur tersimpan yang ditafsirkan ke kompilasi asli. Untuk informasi selengkapnya tentang prosedur tersimpan yang dikompilasi secara asli, lihat Prosedur Tersimpan yang Dikompilasi Secara Asli.
Dalam prosedur tersimpan yang ditafsirkan tertentu, NCA memungkinkan Anda mengidentifikasi semua fitur yang tidak didukung dalam modul asli. NCA menyediakan tautan dokumentasi ke solusi atau work-around.
Untuk informasi tentang metodologi migrasi, lihat OLTP Dalam Memori - Pola Beban Kerja Umum dan Pertimbangan Migrasi.
Panduan Menggunakan Native Compilation Advisor
Di Object Explorer, klik kanan prosedur tersimpan yang ingin Anda konversi, dan pilih Native Compilation Advisor. Ini akan menampilkan halaman selamat datang untuk Penasihat Kompilasi Asli Prosedur Tersimpan. Pilih Berikutnya untuk melanjutkan.
Validasi Prosedur Tersimpan
Halaman ini akan melaporkan jika prosedur tersimpan menggunakan konstruksi apa pun yang tidak kompatibel dengan kompilasi asli. Anda dapat mengklik Berikutnya untuk melihat detailnya. Jika ada konstruksi yang tidak kompatibel dengan kompilasi asli, Anda dapat mengklik Berikutnya untuk melihat detailnya.
Hasil Validasi Prosedur Tersimpan
Jika ada konstruksi yang tidak kompatibel dengan kompilasi asli, halaman Hasil Validasi Prosedur Tersimpan akan menampilkan detail. Anda dapat membuat laporan (klik Buat Laporan), keluar dari Native Compilation Advisor, dan memperbarui kode Anda sehingga kompatibel dengan kompilasi asli.
Sampel Kode
Sampel berikut menunjukkan prosedur tersimpan yang ditafsirkan dan prosedur tersimpan yang setara untuk kompilasi asli. Sampel mengasumsikan direktori yang disebut c:\data.
Catatan
Seperti biasa, elemen FILEGROUP , dan pernyataan USE mydatabase, berlaku untuk Microsoft SQL Server, tetapi tidak berlaku untuk Azure SQL Database.
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;
Lihat Juga
Migrasi ke OLTP Dalam Memori
Persyaratan untuk Menggunakan Tabel yang Dioptimalkan Memori