Connection Pool
Veritabanı veya uzak servis bağlantılarının kurulum maliyetini tekrar tekrar ödememek için sınırlı sayıda açık bağlantıyı yaşam döngüsü, bekleme ve kapasite kurallarıyla yöneten kaynak havuzu.
Neden Havuz?
Yeni veritabanı bağlantısı kimlik doğrulama, ağ ve sunucu tarafı kaynak maliyeti oluşturabilir. Connection pool, kullanılan bağlantıyı fiziksel olarak kapatmak yerine kontrollü biçimde havuza döndürerek tekrar kullanır.
Havuz Boyutu Kapasite Değildir
Pool'u büyütmek veritabanının CPU, I/O veya lock kapasitesini artırmaz. Çok büyük havuz, daha fazla sorgunun aynı anda veritabanına yük bindirmesine ve contention oluşmasına neden olabilir.
Çok küçük havuz ise uygulama tarafında connection wait süresini artırır.
Ölçülmesi Gerekenler
Aktif/boş bağlantı sayısı, bekleyen thread/görev, connection acquisition latency, transaction süresi ve timeout birlikte izlenmelidir.
Havuz kapasitesi ile uygulamadaki concurrency sınırı ayrı bırakılırsa yük altında uzun kuyruklar oluşabilir.
Uygulamalı Bağlantı
HikariCP ile İleri Düzey Havuz Tasarımı yazımda bu dengeyi Java/Oracle bağlamında ayrıntılı ele alıyorum.