Perşembe , 26 Nisan 2018

SQL Server 2014 Paralel Select Into Yeniliği

SQL Server 2014 ile gelen bir başka yenilik Select ifadesini kullanarak bir tablonun tamamı veya bir kısmını kullanarak yeni bir tablo oluşturduğumuz durumlarda bu işlemin paralel bir şekilde yapılması ve dolayısıyla da daha kısa sürede bitmesini sağlamasıdır. SQL Server 2014 öncesi sürümlerde de kullandığımız Select Into komut yapısı SQL Server 2014 sürümüyle beraber paralel olarak çalışmayı desteklemektedir. Bu yeniliğin kullanılması için sadece SQL Server 2014 kullanmamız yetmiyor aynı zamanda işlem yaptığımız veritabanımızın da  compatibility level değerini 120 yani SQL Server 2014 olması gerekmektedir.

Şimdi bu yeniliği bir uygulama üzerinde görelim. Uygulamamıza başlamadan önce aşağıdaki gibi ilk olarak bir veritabanı ve bir tablo oluşturalım.

use master
go
if (exists(select * from sys.databases where name='SelectIntoParalelTest')) 
drop database SelectIntoParalelTest
 
create database SelectIntoParalelTest 
go
alter database SelectIntoParalelTest set compatibility_level = 110
go
 
use SelectIntoParalelTest
go
if(exists(select * from sys.tables where name='TestData')) 
drop table TestData
 
 
create table TestData(ID int primary key clustered,
name char(100) 
default cast(newid() as char(100)))

Yukarıdaki gibi veritabanı ve tablomuzu oluşturduktan sonra tablomuza aşağıdaki gibi örnek kayıtlar ekleyelim.

 insert into TestData(ID)
select top 5000000 row_number() over(order by c.object_id) 
from sys.all_columns c 
cross join sys.objects o cross join sys.columns

Yukarıdaki gibi tablomuza 5 milyon kaydı ekledikten sonra sorgu penceremizde Actual Execution Planı aktif yapalım ve sırasıya önce compatibility_level değeri 110 (SQL Server 2012) ve compatibility_level değeri 120 (SQL Server 2014) olarak Select Into komutumuzu çalıştırıp süre ve Execution Planları inceleyelim.

alter database SelectIntoParalelTest set compatibility_level=110
go
select * into selectIntoLevel_110 from TestData

Sorgumuzu yukarıdaki gibi çalıştırdıktan sonra sonuç aşağıdaki gibi olacaktır.

sql server 2014

sql server 2014 1

 

Yukarıdaki resimde gördüğümüz gibi sorgu sonucumuz 19 saniye sürmüştür. Ayrıca hem execution plana bakarak hem de Clustered Index Scan Operatörünün özelliklerini yandaki resimdeki gibi incelediğimizde işlemin paralel  yapılmadığını daha net görebiliriz.

Şimdi aynı işlemi örnek veritabanımızın compatibility_level değerini 120(SQL Server 2014) yaparak deneyelim.

alter database SelectIntoParalelTest set compatibility_level=120
go
select * into selectIntoLevel_120 from TestData

 

sql server 2014 2

Yukarıdaki resimde gördüğümüz gibi Select Into işlemi hem paralel yapılmış hem de daha hızlı tamamlanmıştır.

 

Hakkında ismailadar

Cevapla

E-posta adresiniz yayınlanmayacak. Required fields are marked *

*


*

Şu HTML etiketlerini ve özelliklerini kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>