SQL Server 2014 ile gelen bir başa 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 kullnaı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 pencermizde 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) olrak 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.

 

Yukarıdaki resim 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ğeri 120(SQL Server 2014) yaparak deneyelim.
 

 

 

 

 

 

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

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

 

Yazıyı beğendiyeseniz sosyal medyada paylaşabilirsiniz.

Yazar Hakkında

Avatar
İsmail Adar

cialis generic kamagra gel cheap cialis uk levitra uk cialis generic kamagra gel kamagra 100mg cheap cialis uk cheap levitra uk cheap cialis kamagra 100mg cialis tadalafil kamagra oral jelly cialis buy viagra generic levitra uk kamagra gel cialis generic cheap levitra cheap viagra uk

Yorumlar

  1. Avatar
    Murat Bilgin

    26/03/2014

    Eline saglik Ismail.Performans bakimindan son derece önemli bir özellik:)

Yorum Yazın

.com

Bülten Üyeliği

Güncel eğitim ve etkinliklerden ilk haberdar olmak için ücretsiz abone olun.

Login

Login olmak için kullanıcı adınızı ve şifrenizi giriniz.

Şifremi Unuttum

×

Hızlı İletişim

Her konuda bana yazabilirsiniz. En kısa zamanda cevap vereceğim.

×