Author Archives: Ahmet AYDIN

IN Operatörünün Farklı Kullanımı

In operatörü sorgulamalarda bir sütunun birden fazla değer alma durumunda kullanılmaktadır.

Select FirstName,MiddleName,LastName from Person.Person
Where FirstName in ('Kim','Jane')

In operatörünü arama yaptığınız karakterleri farklı kolonlar içerisinde arama yaparken kullanabilirsiniz.

Select FirstName,MiddleName,LastName from Person.Person
Where 'Kim' in (FirstName,MiddleName)

Yukarıdaki sorgu ile kim ismini ad ve ikinci ad içerinde olması durumunun araması yapılmıştır.

Category: SQL

Select * Performansı

Tablodan sorgulama yaparken tüm alanları kullanmamıza rağmen select * ile sorgulama yapmamız performans kaybına neden olacaktır. Select * ile okunması gereken verinin boyutu artacaktır ve SQL Server okuma performansını düşürecektir. Sorgunun sonucu eğer bir client’a gönderilecekse verinin boyutunda artma olacağından Client ile SQL server arasındaki trafik artacaktır.

Category: SQL

Boost SQL Server Priority

Windows’un arka planda çalışan SQL Server processine öncelik tanımasını sağlayan bir özelliktir. Fakat bu önceliğin sağlanması diğer processlerinin kaynaklara ulaşamasını sağlayıp başınıza daha büyük bir sorun açabilir. Onun için bu seçeneğin enabled edilmesi önerilmez.

Category: SQL

SQL Server Sistem Veritabanları

Master Database: Master veritabanı instance seviyesinde bilgi tutar. SQL server kullanıcı bilgileri, sistem store procedure’leri, sistem fonksiyonları master veritabanında tutulur. Master veritabanı olmayan instance çalıştırılamaz.

Model Database: Yeni bir veritabanı oluşturacağımız zaman varsayılan olarak oluşturulacak veritabanının özelliklerini aldığı modeldir. Yeni oluşturacağımız bütün veritabanlarında ortak bir store procedure ya da function tanımlamak istiyorsak model veritabanına ekleyerek yeni veritabanı oluşturduğumuzda otomatik olarak yeni veri tabanına o özelliklerin aktarılmasını sağlayabiliriz.

MSDB: SQL Server Agent bilgilerinin tutulduğu veri tabanıdır.

TempDB: SQL server her restart edildiğinde model veritabanını referans alarak oluşturulan geçici nesnelerin tutulduğu veritabanıdır. Sorgulamalarda order by ya da kriter ile arama yapıldığında kayıtlar geçici olarak TempDB veritabanında tutulur. Veritabanının yoğun kullanıldığı sistemlerde I/O sayısını genişletmek için farklı bir diskte tutulması performansı artıracaktır.

Category: SQL

SQL Server Startup Store Procedure

SQL Server restart edildiğinde çalıştırabileceğimiz procedure lerdir. Bu özelliği aşağıdaki kod ile açabiliriz.

sp_configure 'scan for startup procs',1
reconfigure
go

Başlangıçta çalıştırılması için SP yi aşağıdaki gibi tanımlayabilir

sp_procoption @ProcName = 'SP_Name',@OptionName='startup',@OptionValue=1
Category: SQL

SQL Server DAC (Dedicated Administrator Connection) Aracı

SQL server’a yeterli sistem kaynağı kalmadığı durumlarında SQL Management Studio ile bağlanamadığımız durumlarda SQL server’a bağlanmamız için kullanılan bir araçtır.

DAC özelliğini açmak için Database özelliklerinden Facets sayfasından Surface Area Configuration aracından DAC enabled seçeneğinin seçilmesi gerekmektedir.

SSMS üzerinden bağlantı kurulurken Server name başına admin: yazılması yeterlidir.

Category: SQL

SQL Server Filestream

Filestream yapısal olmayan resim, müzik dosyaları gibi dosyaları SQL server üzerinde değilde dosya sistemi üzerinde tutmamızı sağlar. Bu şekilde erişim daha hızlı gerçekleşir. Filestream BLOB (Binary Large Object) yani VARBINARY veri tipinde veri tutan bir kolona uygulayabileceğimiz bir özelliktir. Böyle bir kolona kaydedeceğimiz veri NTFS dosya sistemine direk kaydedilecektir. Kullandığımız kolonda ise bir pointer yer alacaktır. VARBINARY normalde max 2 GB veri tutabilirken Filestream özelliğini açmamızla beraber böyle bir sınır olmayacaktır.

Filestrean özelliğini açtığımızda data ve log dosyaları dışında birde FILESTREAM Data Container klasörü açılacaktır ve dosyalar buraya kaydedilecektir.

Category: SQL

SQL Server Collation Seçimi

Turkish_CI_AS

CI – Case Insensitive : Büyük Küçük harf duyarlılığı yoktur

CS – Case Sensitivity : Büyük Küçük harf duyarlılığı vardır

Accent Insensitive : Aksan duyarlılığı yoktur

Accent Sensitivity : Aksan duyarlılığı vardır

Category: SQL

SQL Server CPU ve RAM Konfigürasyonu

SQL server eğer 32 bit işlemci üzerinde çalışıyorsa en fazla 4GB bellek kullanacak şekilde adresleme yapabilir. SQL server’ın kendi kullanımı için gerekli olan 2 GB bellek haricinde kalacak 2 GB belleği diğer uygulamalar var SQL server adresleme için kullanacaktır. SQL AWE seçeneği ile SQL server’ın 64 GB belleği adresleyip kullanmasını sağlayabiliriz.

SQL serverda dinamik bellek kullanımı ile kullanabileceği max belleği kendi için ayırır ve lazım oldukça kullanır. Başka uygulamaların belleğe ihtiyacı olduğunda ise ayırmış olduğu belleği diğer uygulamalara tahsis eder. Bu bellek yönetiminin dezavantajı başka uygulamalara bellek ayırma işlemini yaparken SQL server’ın meşgul edilmesidir. Diğer yöntem ile statik bellek tanımlama yapılır. Bu şekilde SQL server kullanacağı max ve min bellek belirlenir ve SQL server bunun dışına çıkmaz.

Category: SQL

SQL Union ve Union All Farkı

Union operatörü iki veya daha fazla SQL sorgusunun tek bir result set üzerinde gösterilmesi için kullanılmaktadır. Örneğin güncel ürünlerin bilgilerinin tutulduğu bir tablomuz ile geçmişte sattığımız ürünlerin listesini tek bir result set üzerinde görüntülemek istiyoruz. Güncel ürünler Products tablosunda eski ürünler ise ProductsHistory tablosunda yer almaktadır. Aşağıdaki sorgu ile ikisini tek bir result set üzerinde görüntüleyebiliriz.

Select ProductName, ProductDetails From Products
union
Select ProductName, ProductDetails From ProductsHistory

Union operaörü iki soruguyu birleştirirken tekrar kayıtları result set içinden çıkartır. Buda büyük veriye sahip tablolarda performansı etkileyecek bir faktör olur. Eğer tablolarda dublicated veri olmadığına eminseniz union yerine union all operatörünü kullanarak iki sorgunun her hangi bir işleme tabi tutulmadan birleştirilmesini sağlayabilirsiniz.

Select ProductName, ProductDetails From Products
Union All
Select ProductName, ProductDetails From ProductsHistory
Category: SQL