# Connection Pool (Bağlantı Havuzu)

Adres: https://softwaredictionary.org/tr/terimler/connection-pool
Kategori: Veritabanları
Son güncelleme: 2026-09-30
Okunuşu: kınekşın pul

Kısaca: Connection pool, bir uygulamanın istekler arasında yeniden kullandığı açık veritabanı bağlantıları önbelleğidir; her seferinde bağlantı açma maliyetini önler.

## Connection pool nedir?

Connection pool, bir uygulamanın önceden açtığı ve yeniden kullanıma hazır tuttuğu bir veritabanı bağlantıları kümesidir. Kodun bir sorgu çalıştırması gerektiğinde havuzdan bir bağlantı ödünç alır, kullanır ve kapatmak yerine geri verir. Sonraki istek de aynı bağlantıyı hemen kullanabilir.

Bir veritabanı bağlantısı açmak pahalıdır: ağ gidiş-dönüşleri, çoğu zaman bir TLS el sıkışması, kimlik doğrulama ve her oturum için veritabanı sunucusunda bellek gerektirir. Havuz bu maliyeti bir kez öder ve bağlantıları birçok istek arasında paylaştırır. En büyük boyut, en az boşta bağlantı sayısı ve tüm bağlantılar meşgulken bir isteğin ne kadar bekleyeceğine dair zaman aşımı gibi ayarlarla yapılandırılır.

Bir bisiklet istasyonundaki paylaşımlı bisikletleri düşünün: her yolculuk için yeni bir bisiklet yapıp sonunda atmak yerine, sürücüler birini alır, biner ve bir sonraki kişi için geri koyar. Connection pool'lar çoğu veritabanı sürücüsünde ve ORM'de yerleşiktir; bağımsız havuzlama proxy'leri de birçok uygulama sunucusu ile veritabanı arasında durabilir. Aksi takdirde veritabanını bağlantılara boğacak çok sayıda kısa ömürlü örnek başlatabilen serverless fonksiyonlar için özellikle önemlidirler.

Yaygın bir yanılgı, daha büyük havuzun her zaman daha hızlı olduğudur. Her veritabanı yalnızca sınırlı sayıda bağlantıyı verimli işleyebilir; bu yüzden fazla büyük bir havuz her şeyi yavaşlatabilir, fazla küçük olan ise isteklerin sırada beklemesine yol açar. Bir diğer sık hata, kodun bir bağlantıyı ödünç alıp hiç geri vermediği ve havuz kuruyup uygulama yanıt vermeyi bırakana kadar süren bağlantı sızıntısıdır (connection leak).

## Önemli noktalar

- Havuz, veritabanı bağlantılarını açık tutar ve istekler arasında yeniden kullanır.
- Her sorgu için yeni bir bağlantının yavaş kurulumundan kaçınır.
- Temel ayarlar en büyük boyut, boşta bağlantılar ve bekleme zaman aşımıdır.
- Bağlantıları her zaman havuza geri verin, yoksa sızarlar.
- Büyük her zaman iyi değildir; çünkü veritabanı yalnızca belirli sayıda bağlantıyı kaldırabilir.

## Örnek: Node.js'te pg kütüphanesiyle connection pool oluşturmak

```javascript
import pg from "pg";

// Create one pool when the app starts and share it everywhere
const pool = new pg.Pool({
  connectionString: process.env.DATABASE_URL,
  max: 10,                       // at most 10 open connections
  idleTimeoutMillis: 30000,      // close connections idle for 30 seconds
  connectionTimeoutMillis: 2000, // give up if no connection is free in 2 seconds
});

// pool.query borrows a connection and returns it automatically
const { rows } = await pool.query("SELECT * FROM users WHERE id = $1", [42]);
console.log(rows[0]);
```

## Sık sorulan sorular

**Neden connection pool kullanılır?**

Her istek için yeni bir veritabanı bağlantısı açmak gecikme ekler ve veritabanına ekstra yük bindirir. Küçük bir açık bağlantı kümesini yeniden kullanmak sorguların daha hızlı başlamasını sağlar ve bağlantı sayısını kontrol altında tutar.

**Connection pool ne kadar büyük olmalı?**

Genellikle insanların beklediğinden küçük: veritabanı sunucusundaki CPU çekirdeği başına birkaç bağlantıyla başlayın, sonra yük testleriyle ayarlayın. Tüm uygulama örnekleri genelindeki toplamın veritabanının bağlantı sınırının altında kalması gerektiğini unutmayın.

**Havuzdaki tüm bağlantılar meşgulken ne olur?**

Yeni istekler bir bağlantı geri verilene kadar bir kuyrukta bekler. Yapılandırılan zaman aşımından önce hiçbiri boşalmazsa istek bir hatayla başarısız olur; bu çoğu zaman yavaş sorguların ya da bir bağlantı sızıntısının işaretidir.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
