SQL Server Connection Pooling, Neden Lazımki?

June 22, 2010

Yazılım uygulamalarınız içerisinde veritabanı sistemleri ile entegre çalışıyorsanız en önemli argümanlarınızdan biri de Connection Pooling haline gelir. Connection Pool basitçe veritabanı bağlantılarının cache lendiği bir havuz dur ki uygulamanızın ihtiyacı olduğunda bu havuzdan ihtiyacı olan bağlantıyı alır.

Connection Pooling sisteme yük getiren bağlantı oluşturma işlemlerinden sizleri kurtarmaya çalışır.

Connection Pooling yazılımsal bir özellikden çok veritabanı sisteminin desteklemesi gerekn bir özellikdir. SQL Server ın Connection Pooling desteği vardır.

Bu yapının nasıl çalıştığını inceleyecek olursak.

SQL Server kendisine gelen bağlantı kuran uygulamanın kullanığı connection string e göre bir bağlantı havuzu oluşturur ve oluşturduğu bağlantıyı bu havuza ekler. Eğer uygulama aynı connection string kullanarak yeni bir bağlantı isteği yaptı ise SQL Server havuzdan uygun bir bağlantıyı uygulamanın kullanımına sunar ancak eğer havuz da kullanım için uygun bağlantı bulunmuyorsa SQL Server yeni bir bağlantı oluşturur ve bu bağlantıyı da havuza ekler.

Sır Connection String de;

Aslında Pooling oluşturmanın tüm sırrı Connection String de dir. SQL server birbirinden farklı her connection string için bir bağlantı havuzu açar.

using(SqlConnection con1 = new SqlConnection()){
   con1.ConnectionString = "connstr1";
   con1.Open();
   //Connection Pool 1
}
using(SqlConnection con2 = new SqlConnection()){
   con2.ConnectionString = "connstr2";
   con2.Open();
   //Connection Pool 2
}
using(SqlConnection con3 = new SqlConnection()){
   con3.ConnectionString = "connstr1";
   con3.Open();
   //Connection Pool 1
}

Sistemde oluşturulmış olan bağlantı havuzlarını Performance Monitor (perfmon.exe) aracılığı ile takip edebilirsiniz.

Perfmon

Pooling işlemleri için connection string lerde kullanılan extra parametreler aşağıdaki gibidir.

Parametre
Varsayılan Tanım
Max Pool Size 100 Havuzda bulunabilecek maximum bağlantı sayısı
Min Pool Size 0 Havuzda bulunabilecek en düşük bağlantı sayısı (Bağlantılar IDLE konuma düşse de sayıları bu sayının altına düşmezler)
Pooling ‘true’ değerinin true olması durumunda bağlantı havuz dan çekilir.

Bu değerleri de kullanarak örnek bağlantı cümlemiz.

data source=localhost;initial catalog=northwind;integrated security=sspi;
pooling=yes; min pool size=20; max pool size=200;

Bu connection string barındırıran bir uygulama oluşturup çalıştırırsanız eğer.

SQL Server da sp_who komutunu çalıştırdığımızda aynı havuz a ait olan 20 adet connection i hazır olarak görebiliriz.

Leave Your Comment

 
Powered by Wordpress and MySQL. Theme by Shlomi Noach, openark.org