Natively Compiled Stored Procedure Nedir ve Nasıl Kullanılır?
Natively Compiled Stored Procedure, In Memory OLTP ile beraber SQL Server 2014 sürümünün bize sunduğu yeni bir stored procedure çeşididir. Sadece Memory Optimized Tablolar’da kullanılabilir. In Memory OLTP ve Memory Optimized Tablolar için “In Memory OLTP Nedir? Ve Nasıl Kullanılır?” isimli makalemi okumanızı öneririm.
Natively Compiled Stored Procedure’de Procedure içindeki TSQL kodları daha iyi performans sağlayabilmek için native koda dönüştürülür.
Önceki makalemizde Memory Optimized Tablo’ların, Disk Based Tablolara göre performans olarak 5-30 kat daha iyi olduğunu söylemiştik. Memory Optimized Tabloları Natively Compiled Stored Procedure’le birlikte kullandığımızda bu fark daha da artıyor. Hızını görmek için test yapmanızı öneririm. Makalenin devamında gerekli kodu paylaşacağım.
Bildiğimiz stored procedure’ler ilk çalıştıklarında derlenirler. Bu yüzden oluşturma sırasında hata almasalar bile ilk çalıştırma sırasında hata alabilirler.
Natively Compiled Stored Procedure’ler oluştuklarında derlendikleri için eğer bir hata varsa oluşturamazsınız. Ne kadar hızlı olduğunu görmek istiyorsanız yukarda bahsettiğim In Memory OLTP makalesinde oluşturduğumuz tabloya aşağıda kodunu paylaştığım natively compiled stored procedure’ü kullanarak 50000 kayıt insert etmelisiniz.
USE [Test] GO CREATE PROCEDURE NativelyCompiledSPOrnek WITH NATIVE_COMPILATION, EXECUTE AS OWNER, SCHEMABINDING AS BEGIN ATOMIC WITH (TRANSACTION ISOLATION LEVEL = SNAPSHOT, LANGUAGE = N'English') DECLARE @i INT = 0 WHILE @i < 50000 BEGIN INSERT INTO dbo.MemTabloOrnek VALUES (@i,N'Adım Soyadım') SET @i += 1 END END GO --EXEC NativelyCompiledSPOrnek --SQL Server 2016'da EXECUTE AS OWNER ifadesine gerek kalmıyor.