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.
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.