Pazartesi , 20 Kasım 2017

SQL Server Development

SQL Server 2016 Truncate Table Komutu

SQL Serverda tablomuzda tutulan verileri silmek için iki komut kullanabiliriz. Bunlardan bir tanesi TRUNCATE iken diğeri ise DELETE komutudur. Her iki komut da tablolarımızdaki verileri silmek için kullanılsa da her ikisinin de farklı yönleri vardır. Örneğin TRUNCATE TABLE komutu ile tablolarımızda bulunan verinin tamamını hızlıca silebiliriz. Çünkü TRUNCATE TABLE komutu veriyi silerken satır satır silmek yerine verinin tutulduğu pagelerin referanslarını ... Devamını Oku »

SQL Serverda Küçük Boyutlu Tablolardaki Yüksek Fragmentation Oranı

İndekslerin fragmantasyon oranlarının düzenli bir şekilde takip edilmesi ve fragmantasyon oranının yüksek olduğu durumlarda indeks üzerinde Rebuild veya Reorganize işlemlerinin yapılması veritabanı performansı için hayati önem taşımaktadır. Özellikle küçük boyutlu tablolarda fragmantasyon oranını kontrol ettiğimizde fragmantasyon oranının yüksek olduğunu, hatta ilgili indeksimizi Rebuild/Reorganize ettiğimizde dahi bu oranın düşmediği görebiliriz. Şimdi hangi durumlarda böyle bir sorunla karşılaşabileceğimizi ve sebebini bir örnek ... Devamını Oku »

Farkli Collation Kullaniminin Sorgu Performansina Etkisi

Collation, SQL Serverda tutulan metinsel verilerin nasıl davranacağını belirten ayardır. Collation ayarı SQL Serverda hiyerarşik olarak ayarlanır. Yani Hem SQL Server için Collation seçilirken aynı zamanda veritabanı için de farklı bir Collation seçilebilir. Hatta oluşturduğumuz tabloda metinsel veri içeren kolonlarımızın bile Collation değeri farklı olabilir. Bu sebeple Collation değeri farklı olan iki tablodaki verileri karşılaştırmaya çalıştığımızda aşağıdaki gibi bir hata ... Devamını Oku »

SQL Server 2016 (CTP2) Native JSON Destegi

JSON(JavaScript Object Notation), Xml’e benzer olarak programlama dilinden bağımsız uygulamalar arasında veri alışverişi yaparken kullanılan javascript tabanlı bir formattır. JSON formatında veriler key ve value şeklinde tutulmaktadır. Örneğin aşağıdaki gibi bir kişi bilgisini JSON formatında belirtebiliriz. { "name": "ismail", "city": "istanbul", "job": "dba" } Yukarıdaki JSON formatındaki veriyi incelediğimizde her key değerinin tırnak içinde yazıldığını ve bu key’e ait olan ... Devamını Oku »

SQL Server Execution Plan Mimarisi 1

Execution plan en basit ifadesiyle Query Optimizer tarafından hesaplanan ve bir sorgunun en ideal şekilde çalışması için bize önerilen en optimum yoldur. Diğer bir ifadeyle bir Execution plan bize bir sorgunun çağrıldığında nasıl çalışacağını gösterir. Özellikle Veritabanı yöneticilerinin çok sık karşılaştığı performans problemlerini analiz ederken öncelikle çalışma süresi çok uzun süre alan sorgular tespit edilir ve daha sonra bu sorguların ... Devamını Oku »

Trigger’larimizda COLUMNS_UPDATED() Fonksiyonun Kullanimi

Update işlemleri için bir trigger yazdığımızda UPDATE() fonksiyonunu kullanarak bir kolonun değerinin değişip değişmediğini yani ilgili kolonun update olup olmadığını anlayabiliyorduk. Çünkü Update() fonksiyonu parametre olarak bir kolon adı alıyor ve triggerımızı tetikleyen işlemde o kolonun değerinin değişip değişmediğini kontrol ederek eğer değer değişmişse True değişmemişse False değerini döndürüyordu. Fakat bazı durumlarda sadece bir kolonun değerini değil aynı andan birden ... Devamını Oku »

Isnull fonksiyonunda Bug mı var?

ISNULL fonksiyonu verilen bir değerin NULL olup olmadığını kontrol edip eğer NULL ise verilen değer yerine belirtilen alternatif değeri döndüren bir fonksiyondur. Gelen kullanımı aşağıdaki gibidir. ISNULL ( check_expression , replacement_value ) Fonksiyonun aldığı ilk parametre olan check_expression NULL olup olmadığı kontrol edilecek ifadedir. İkinci parametre olan replacement_value  ise eğer ilk değer Null ise onun yerine döndürülecek değeri belirtmektedir. Örneğin AdventureWorks veritabanındaki Production.Product tablosunda Color değerini ... Devamını Oku »

TSQL- EXCEPT ve INTERSECT Komutlari

Except Except operatörü de iki farklı sorgu sonucunun karşılaştırırken intersect operatöründen farklı olarak sadece ilk sonuç setinde olup ikici sorgu sonucunda olmayan kayıtları listelememizi sağlamaktadır. Except operatörünü kümeleri kullanarak şematize edecek olursak aşağıdaki gibi bir ifade ile karşılaşırız. Except operatörü iki farklı sorgudan dönen sonuç kümelerini karşılaştırarak sadece ilk belirtilen sorgu sonucunda olan fakat ikinci sorgu sonucunda olmayan kayıtları listeler. ... Devamını Oku »

Indeksleri Unique Olusturmanin Performansa Etkisi

Unique indeksler, oluşturuldukları kolondaki değerlerin tekrar etmeyeceğini garanti eden indekslerdir. Daha açık bir ifadeyle tablomuzda bir kolonu kullanarak bir Unique indeks oluşturduğumuzda ilgili kolona aynı değerden sadece bir tane girilebileceği garanti edilmiş olur. Bu sebeple Unique indekslerin en sık kullanıldığı noktalardan biri de tekrar etmemesi gereken veriler için bütünlüğü sağlamaktır. Örneğin üye bilgilerinin tutulduğu tabloda TC kimlik numarası veya email ... Devamını Oku »