Tarih Fonksiyonlarının Performansa Etkisi

Reading Time: 2 minutes

Tarihsel veri tiplerinde ki dönüştürme işlemleri çoğu zaman performansı aşağı çeken noktalardır fakat hep gözden kaçan tarfta  onlar olur. Örneğin Cast ve Convert süreçlerinde ki performans farklarını inceleyeceğiz bu makalemde.

Evet iki side aynı işi gerçekleştiriyor fakat örneğimizin sonucunda iki si arasında query design ına ve kullanıldığı yere göre büyük farklar olabiliyor.

Convert Syntax :

CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

Cast Syntax :

CAST ( expression AS data_type [ ( length ) ] )

Şimdi örnek bir tablo oluşturup o tablo içerisine data basalım. (Aşağıda ki Query ile bu süreci gerçekleştirebilirsiniz.)

Yukarıda ki sürecimizi tamamladıktan sonra , oluşturmuş olduğumuz tablomuzda DateColumn kolonu üzerine aşağıda ki Index ‘i oluşturalım.

Artık Demomuzu gerçekleştirebileceğimiz bir ortama sahibiz. Şimdi ise verimizi hem Convert fonksiyonunu hemde Cast fonksiyonunu kullanan iki ayrı Sorgu yazıp değerlerini incelememiz gerekiyor.

Query I :

Query II :

Yukarıda ki Query leri inceleiğimiz de SET STATISTICS IO ON ifadesini görmekteyiz. Bu ifade ile Query mizin IO değerlerini alıyoruz ki iki Query nin IO değerlerini karşılaştırarak Performance değerlendirmesi yapabilelim.

Aynı zamanda Query imizi Execute butonuna basmadan Actual Execution Plan butonuna da basarak Execution Planın da hazırlnaması sağlayalım ki Plan ları karşılaştırabilelim.

Query I ‘i EXEC ettiğimizde oluşan istatistik Değeri ve Execution Planını aşağıda görmekteyiz.

Q I – Istatistik :

(14392 row(s) affected)

Table ‘DatePerformance’. Scan count 1, logical reads 825, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

(1 row(s) affected)

Q I – Execution Plan :

Query II ‘i  EXEC ettiğimiz de olulan istatistik Değeri ve Execution Planı aşağıda görmekteyiz.

 

Q II – Istatistik :

(14392 row(s) affected)

Table ‘DatePerformance’. Scan count 1, logical reads 56, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

(1 row(s) affected)

Q II – Execution Plan :

Görüldüğü üzere CONVERT ve CAST fonksiyonları ile ayrı ayrı iki query yazdık ve performans değerlendirmesinde ciddi IO farkı ve Execution Plan farkı olduğunu gördük.

Artık tarih formatlama gibi süreçlerimizde dikkatli olmamız gerektiğini ve yüklü süreçlerde query design larmızda analiz ederek fonksiyon kullanmamızın çok önemli olduğunun farkındayız.

Kolay Gelsin.

Leave a Reply

Your email address will not be published. Required fields are marked *