Recent comments

İçerik Ara



Yasal Uyarı
Bu sitede sunulan tüm bilgi ve dökümanlar Turgay Sahtiyan tarafından yazılmaktadır. Yazıların kaynak göstermek şartıyla kullanılması serbesttir.

© Copyright 2009-2011
Takvim
<<  May 2012  >>
MoTuWeThFrSaSu
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910
Keywords

Bildiğiniz gibi her SQL komutu çalıştırıldığında ilgili komut için bir Query Plan oluşturulur ve Plan Cache’de saklanır. Eğer ilgili sorgu parameterize edilebilen bir sorgu ise (Stored Procedure gibi) ve bu sorgu için daha önce bir Query Plan oluşturulduysa, tekrar bir Query Plan oluşturulmaz ve daha önce Plan Cache’de saklanan Query Plan kullanılır.

Query Plan oluşturulma işlemi masraflı bir işlemdir. Bu yüzden oluşturulmuş Query Plan’larının saklanıp kullanılarak tekrar tekrar Query Plan oluşturulmaması performans açısından önemli bir durumdur.

İşte bu bakış açısıyla exec ve sp_executesql komutları ile Dynamic SQL kullanımında ortaya çıkan farklılıkları bu makalede inceleyip, sp_ExecuteSQL’in exec yerine neden tercih edilmesi gerektiğini örnekler ile görüyor olacağız.

More...

Tablolar üzerinde çalışacağım hemen hemen her makalemde bir örnek çalışma tablosu oluşturuyorum. Bu makalemde ise bu çalışma tablolarını daha hızlı bir şekilde nasıl oluşturabileceğimizi görüyor olacağız.

More...

Query plan oluşturmak CPU ve IO açısından pahalı bir işlemdir. Bu yüzden oluşturulmuş olan Query Plan’lar Plan Cache’de saklanır ve aynı sorgu tekrar geldiğinde kullanılır. Objelerin (tablo vs.) two-part-name şeklinde kullanılmamaları bazı durumlarda Plan’ın tekrar kullanılmamasına ve yeni plan oluşturulmasına sebep olur. Bu da hem memory’nin optimum kullanılmamasına hem de performans sıkıntısına sebebiyet verir.

More...

Bugünkü makalemde bir sonraki makalemde kullanacağım bir ifadeden, Safe Query mantığından bahsediyor olacağım. Hangi durumlarda Query’nin Safe olarak düşünüldüğü hangi durumlarda Safe olmadığını görüyor olacağız

More...

Where Bloğunda Case Kullanmayın makalemden sonra ikinci “kullanmayın” makalem ile karşınızdayım :) Bu makalemde where bloğunda kullanılan “Collate” anahtar kelimesinin performansa olan etkisini örnekler ile inceleyeceğiz.

More...

Keskin bir ifade oldu farkındayım :) O yüzden cümlenin başına “çok zorda kalmadıkça diye” ekleyelim. Kullanmayın deme sebebim ise where bloğunda case kullanımı, istatistikler üzerinden estimated rows hesabı yapılırken yanlış hesaplamalar yapılmasına dolayısıyla da estimate edilecek kayıt sayısının doğru tahminlenememesi anlamına gelmektedir. Bu durumda da Query Plan sağlıklı bir şekilde oluşturulamayacak ve gereksiz IO yapılmasından dolayı performans sıkıntısı ortaya çıkacaktır. Bugünkü yazımda bahsettiğim bu konuyu örnekler ile görüyor olacağız.

More...

Concat_Null_Yields_Null özelliği ile string birleştirmelerinde NULL ifadenin boş string olarak algılanması dolayısıyla da sonucun NULL gelmemesi için kullanılır.

More...

Bildiğiniz gibi NewID() fonksiyonu 16 byte büyüklüğünde rasgele unique değer oluşturmak için kullanılır. NewID’nin customize edilmiş hali olan NewSequentialID() fonksiyonu ise her defasında daha önce oluşturulan GUID’lerden daha büyük bir GUID oluşturmak için kullanılmakta.

More...

SQL Server 2011 Denali ile beraber gelen CONCAT fonksiyonu string ifadeleri birleştirmek için kullanılabilir.

More...

Bugünkü yazımda SQL Server 2011 Denali ile beraber gelen 2 yeni mantıksal operatörden bahsedeceğim.

More...

SQL Server 2011 Denali ile beraber 7 tane yeni Datetime fonksiyonu geldi. Bugün bu fonksiyonlardan en çok hoşuma giden EOMONTH’u örnekler ile inceleyip, diğer kalan 6 tane için de ufak bilgiler vereceğim.

More...

Bildiğiniz gibi LinkedServer tanımlayarak A server’ı üzerinden B Server’ında select,update gibi işlemleri yapabilmemiz mümkün.

Bugün anlatacağım OpenDataSource komutu ile linked server’a gerek kalmadan bu işlemleri nasıl yapabileceğimizi görüyor olacağız.

More...

Bu aralar sıkça kullandığım ve işimi oldukça kolaylaştıran ufak bir syntax’tan bahsetmek istiyorum.

GO komutu ile belirli bir kod bloğunu n kere çalıştırmak.

More...

SQL Server login’lerine eklemiş olduğunuz bir Active Directory kullanıcı grubu var. Peki bu kullanıcı grubu hangi kullanıcıları kapsamakta.

Ya da soruyu daha detaylandırırsak; Active Directory’de yada local makinada olan bir kullanıcı grubunun üyelerine T-SQL ile bakabilir miyiz?

Cevabımız evet.

More...

ObjectProperty ile ilgili database’deki bir objenin bazı özelliklerini sorgulayabiliriz. Örneğin hangi tablolarımda Cluster Index var gibi bir soruya sys.indexes’i join’lemeden objectproperty’i kullanarak ulaşmak mümkün.

Bugünkü yazımda objectproperty kullanarak 4 adet faydalı script yazacağız.

More...

Bildiğiniz gibi yazdığımız SP,View,Function gibi object’lerde Index seçimini Query Optimizer’a bırakmayıp kendimiz Force ederek istediğimiz bir Index’i kullandırtabiliriz. Fakat Best practice olarak bu yöntem önerilmez. Çünkü Force edilen Index’i kaldırma gibi bir durum oluşursa bu index’in force edildiği script’ler hata verecektir. Ayrıca ilk force edildiği anda belki ilgili index ilgili script’e uyuşmaktaydı, ama daha sonra bu index’te yapılacak bir değişiklik artık query’e tam olarak uyuşmayacak ve performans sıkıntısı doğuracaktır.

Bugün sizin ile paylaşacağım script ile hangi object’lerde Index Force’un kullanıldığını sorgulayacağız.

More...

Bugün bir developer arkadaşımın benden istediği script’i sizinle paylaşmak istiyorum.

More...

SQL Server 2011 “Denali” ile gelen bir diğer özellik de Sequence Objects yani Sıralama objesi. Table’larda bulunan Identity kolonuna çok benzeyen Sequence ile otomatik artan sayılar oluşturmak mümkün. Identity’den en büyük farkı ise bir tablo ile sınırlı kalmaması, istenirse 5 tablo için aynı sequence object’in kullanılabilmesi.

More...

SQL Server 11 “Denali” ile gelen yeni özelliklerden biride Query’lerde Paging ya da sayfalama yapabilme opsiyonu. Denali’den öncede bazı yöntemlerle paging yapılabilmekteydi ama yeni gelen syntax’la bu işlemi yapabilmek artık çok daha kolay.

More...

Bugün size geçenlerde ihtiyacım olan bir konudan, varchar bir değişken içerisinde bulunan bir varbinary(64) değerin varbinary(64)’e convert edilmesi işleminden bahsedeceğim.

More...