Tüm Ürünler
Search
Belge Merkezi

ApsaraDB RDS:Configure connection pooling

Son Güncelleme:Oct 09, 2026

Uygulamanız sıkça kısa ömürlü bağlantılar oluşturuyorsa veya bağlantı sayısı yüksek olup MySQL veritabanınızın sınırına yaklaşıyorsa ApsaraDB RDS for MySQL veritabanı ara sunucusunun bağlantı havuzu özelliğini kullanın. Bu özellik, yeni bağlantıların sıklığını azaltarak veritabanının ana iş parçacığı üzerindeki yükü en aza indirir ve toplam bağlantı sayısını düşürür.

Bir bağlantı havuzu türü seçin

ApsaraDB RDS for MySQL veritabanı ara sunucusu, işlem düzeyinde ve oturum düzeyinde bağlantı havuzu sunar. Kullanım durumunuza göre bağlantı havuzu kullanıp kullanmayacağınıza karar verebilir ve bir tür seçebilirsiniz.


Bağlantı havuzu türü


Kullanım senaryoları


İşlem düzeyinde bağlantı havuzu (önerilir)

Kısa ömürlü bağlantıların, sık bağlantı oluşturmanın ve bağlantı sayısının MySQL veritabanı sınırına yaklaştığı senaryolar.

İşiniz, işlem düzeyinde bağlantı havuzunun sınırlamalarından etkilenmemektedir.


Oturum düzeyinde bağlantı havuzu


Kısa ömürlü bağlantıların ve sık bağlantı oluşturmanın olduğu ancak uygulamanın işlem düzeyinde bağlantı havuzunun sınırlamalarından etkilendiği senaryolar.


Bağlantı havuzu kullanmayın


Kalıcı bağlantıların, az sayıda bağlantının veya Druid, DBCP, C3P0 ya da HikariCP gibi uygulama tarafı bağlantı havuzunun bulunduğu senaryolar.

Bağlantı havuzu türleri

İşlem düzeyinde bağlantı havuzu (önerilir)

Kullanım senaryoları

  • Uygulamanız ağırlıklı olarak kısa ömürlü bağlantılar kullanır.

  • Bağlantılar sıkça oluşturulur.

  • Bağlantı sayısı büyüktür ve MySQL veritabanının bağlantı sınırına yaklaşır.

Avantajlar

  • Uygulamanız ile veritabanı arasında bağlantı kurulma sıklığını azaltarak MySQL veritabanının ana iş parçacığı üzerindeki yükü hafifletir.

  • Veritabanına yapılan toplam bağlantı sayısını azaltır.

Nasıl çalışır

İşlem düzeyinde bağlantı havuzunu etkinleştirdikten sonra, bir istemci bir oturum isteği başlattığında veritabanı ara sunucusu istemciyle bir ön uç bağlantısı kurar ancak hemen veritabanına bir arka uç bağlantısı oluşturmaz. Bir isteğin işlenmesi gerektiğinde ara sunucu, kullanılabilir bir arka uç bağlantısı için işlem düzeyinde bağlantı havuzunu denetler.

Not

Bir arka uç bağlantısı, user ve dbname parametreleri ile bazı sistem değişkeni değerleri istekle tutarlıysa kullanılabilir kabul edilir.

  • Kullanılabilir bir bağlantı varsa ara sunucu bunu yeniden kullanır. İşlem tamamlandıktan sonra ara sunucu bağlantıyı işlem düzeyindeki bağlantı havuzuna iade eder.

  • Kullanılabilir bir bağlantı yoksa ara sunucu veritabanına yeni bir arka uç bağlantısı oluşturur.

Birden çok oturum tek bir arka uç bağlantısını paylaşabilir. Aşağıdaki şekilde gösterildiği gibi, aktif işlemi olan oturumlar bir arka uç bağlantısını meşgul ederken, aktif işlemi olmayan oturumlar meşgul etmez.

image

Tek bir arka uç bağlantısının zaman içinde birden çok oturumun işlem isteklerini karşılamasına olanak tanıyan bu model şu avantajları sağlar:

  • Azalan bağlantı sıklığı: Arka uç, veritabanına kalıcı bağlantıları koruyarak sık sık yeni bağlantı kurma ihtiyacını azaltır ve veritabanının ana iş parçacığı üzerindeki yükü düşürür.

  • Daha düşük toplam bağlantı sayısı: Birden çok oturum aynı arka uç bağlantısını paylaşarak boşta kalan bağlantıların kaynak tüketmesini engeller ve veritabanına yapılan toplam bağlantı sayısını azaltır.

Not

Veritabanı ara sunucusunun kendisi maksimum bir bağlantı sınırı uygulamaz; bu sınır arka uç veritabanının teknik özellikleri tarafından belirlenir.

Sınırlamalar

  • Aşağıdaki işlemleri gerçekleştirmek bağlantıyı kapanana kadar kilitler. Kilitli bir bağlantı, yeniden kullanım için bağlantı havuzuna iade edilmez.

    • PREPARE deyimi veya komutu yürütün.

    • Geçici bir tablo oluşturun.

    • Kullanıcı değişkenlerini değiştirin.

    • Büyük paketleri işleyin (örneğin, 16 MB veya daha büyük).

    • LOCK TABLE kullanın.

    • Çoklu deyim sorguları yürütün.

    • Depolanan yordam çağırın.

  • FOUND_ROWS, ROW_COUNT ve LAST_INSERT_ID işlevleri desteklenmez. Bu işlevleri çağırabilirsiniz ancak sonuçlarının doğru olması garanti edilmez.

    • Ara sunucu sürümü 1.13.11 veya sonraki bir sürümse, SELECT SQL_CALC_FOUND_ROWS * FROM t1 LIMIT * deyiminden hemen sonra SELECT FOUND_ROWS() komutunu kullanabilirsiniz. Ancak MySQL artık bu kullanımı önermemektedir. SELECT FOUND_ROWS() ifadesini SELECT COUNT(*) FROM tb1 ile değiştirmenizi öneririz. Daha fazla bilgi için bkz. FOUND_ROWS().

    • Ara sunucu sürümü 1.13.11 veya sonraki bir sürümse, doğru bir sorgu sonucu sağlamak amacıyla INSERT deyiminden hemen sonra SELECT LAST_INSERT_ID() deyimini kullanabilirsiniz.

Kullanım notları

  • wait_timeout ayarlanan bağlantılarda, her istek bağlantı havuzundan bir bağlantı aldığı için wait_timeout ayarı istemci tarafında etkili olmayabilir. wait_timeout süresi dolduğunda yalnızca bağlantı havuzundaki arka uç bağlantısı kesilir ve bu durum istemci bağlantısının kesilmesine neden olmaz.

  • sql_mode, character_set_server, collation_server ve time_zone değişkenleri hariç, uygulamanız diğer oturum düzeyi sistem değişkenlerine bağımlıysa istemci bağlantı kurduktan sonra açıkça bir SET deyimi yürütmelidir. Aksi takdirde bağlantı havuzu, sistem değişkenleri değiştirilmiş bir bağlantıyı yeniden kullanabilir.

  • Bağlantılar yeniden kullanılabileceğinden, geçerli bağlantının iş parçacığı kimliğini sorgulamak için select connection_id() çalıştırabilirsiniz.

  • Bağlantılar yeniden kullanılabileceğinden, show processlist veya SQL Explorer and Audit tarafından görüntülenen IP adresi ve bağlantı noktası, istemcinin gerçek IP adresi ve bağlantı noktasıyla eşleşmeyebilir.

  • Veritabanı ara sunucusu, tüm düğümlerden gelen show processlist sonuçlarını birleştirerek döndürür. Ön uç ve arka uç bağlantılarının iş parçacığı kimlikleri eşlenemez. Bu durum, komut başarıyla yürütülmüş olsa bile KILL komutunun hata bildirmesine neden olabilir.

Oturum düzeyinde bağlantı havuzu

Kullanım senaryoları

  • Uygulamanız ağırlıklı olarak kısa ömürlü bağlantılar kullanır.

  • Bağlantılar sıkça oluşturulur.

Avantajlar

Uygulamanız ile veritabanı arasında bağlantı kurulma sıklığını azaltarak MySQL veritabanının ana iş parçacığı üzerindeki yükü hafifletir.

Nasıl çalışır

Ön uç ve arka uç bağlantıları

Bir uygulama gibi bir istemci bir veritabanıyla bağlantı kurduğunda veritabanı ara sunucusu aracı görevi görür. Aşağıdaki şekilde gösterildiği gibi bağlantıyı, istemci ile veritabanı ara sunucusu arasındaki bir ön uç bağlantısına ve veritabanı ara sunucusu ile veritabanı arasındaki bir arka uç bağlantısına böler.

image

Bağlantı havuzu devre dışı bırakıldığında bağlantı süreci

Bağlantı havuzu devre dışı bırakılırsa ara sunucu her oturum için yeni bir ön uç ve arka uç bağlantısı oluşturur.

image

Oturum düzeyinde bağlantı havuzunun çalışma şekli

Bir oturum kurulduğunda oturum düzeyinde bağlantı havuzu önce bir ön uç bağlantısı oluşturur. Ardından kullanılabilir bir arka uç bağlantısı için bağlantı havuzunu denetler.

Not

Kullanıcı, clientip ve dbname parametreleri istekle eşleşiyorsa bir bağlantı kullanılabilir kabul edilir.

  • Kullanılabilir bir bağlantı varsa bu bağlantı yeniden kullanılır.

  • Kullanılabilir bir bağlantı yoksa veritabanıyla yeni bir arka uç bağlantısı kurulur.

Bir oturum sonlandığında ara sunucu ön uç bağlantısını keser ve arka uç bağlantısını havuza iade eder. Bu sayede arka uç bağlantısı yeni bir oturum tarafından yeniden kullanılabilir ve veritabanının ana iş parçacığı üzerindeki yük azaltılır.

image

Oturum düzeyinde bağlantı havuzunda, aşağıdaki şekilde gösterildiği gibi, bir oturum sonlanana kadar bir arka uç bağlantısı tek bir oturum tarafından meşgul edilir. Arka uç bağlantısı ancak o zaman havuza serbest bırakılır.

image

Sınırlamalar

Yoktur.

Kullanım notları

Bir oturum sonlanmadan önce, boşta olsa ve işlenecek işlemi bulunmasa bile arka uç bağlantısı diğer oturumlar tarafından kullanılamaz. Bu nedenle oturum düzeyinde bağlantı havuzu veritabanı bağlantılarının toplam sayısını azaltmaz.

Bağlantı havuzunu yapılandırın

Ön koşullar

Veritabanı ara sunucusu etkinleştirilmiştir.

Kullanım notları

  • Bağlantı havuzu özelliği, farklı IP adreslerine göre aynı hesap için farklı izinler atamayı desteklemez. Aynı hesap için farklı IP adreslerinde farklı veritabanı veya tablo izinleri yapılandırırsanız (örneğin, user@192.xx.xx.1 database_a için izinlere sahiptir ancak user@192.xx.xx.2 sahip değildir) bağlantı havuzunu etkinleştirmek bağlantılar yeniden kullanıldığında izin hatalarına yol açabilir.

  • Uygulamanız zaten bir istemci tarafı bağlantı havuzu kullanıyorsa veritabanı ara sunucusunun bağlantı havuzunu etkinleştirmenize gerek yoktur.

  • Bağlantı havuzu, çok sayıda yavaş SQL sorgusundan kaynaklanan bağlantı yığılmasını çözemez. SQL sorgularınızı optimize etmenizi veya MySQL örneğinde yavaşlığın nedenini gidermenizi öneririz.

  • Ara sunucu sürümü 2.9.1'den önceyse salt okunur ara sunucu uç noktaları için bağlantı havuzunu yapılandıramazsınız. Ara sunucu sürümü 2.9.1 veya sonraki bir sürümse hem okuma/yazma hem de salt okunur ara sunucu uç noktaları için bağlantı havuzunu yapılandırabilirsiniz.

Yordam

  1. Örnekler sayfasına gidin. Üst gezinme çubuğunda RDS örneğinin bulunduğu bölgeyi seçin. Ardından RDS örneğini bulun ve örneğin ID değerine tıklayın.

  2. Sol gezinme bölmesinde Database Proxy öğesine tıklayın.

  3. Connection Information bölümünde aşağıdaki yöntemlerden birini kullanarak bağlantı havuzunu etkinleştirin:

    Not
    • Bağlantı havuzu varsayılan olarak devre dışıdır.

    • Bağlantı havuzu türünü değiştirdikten sonra değişiklik yalnızca yeni bağlantılara uygulanır.

    • Yöntem 1: Ara sunucu uç noktası ID'sinin sağındaki image.png simgesinin üzerine gelin. Açılan iletişim kutusunda Enable Transaction-level Connection Pooling veya Enable Session-level Connection Pooling öğesine tıklayın ve ardından onay iletişim kutusunda OK öğesine tıklayın.

    • Yöntem 2: Hedef ara sunucu uç noktasının Actions sütununda Modify Configuration öğesine tıklayın. Açılan iletişim kutusunda etkinleştirmek için Connection Pooling yanındaki istediğiniz bağlantı havuzu türünü seçin.

      Not

      Bir bağlantı havuzu türü zaten etkinleştirilmişse bunu değiştirmek için farklı bir tür seçebilirsiniz.

      Bu iletişim kutusunda ayrıca Read/write attribute (Read/write (read/write splitting) veya Read-only), Latency threshold (aralık: 0 ila 3.600 saniye), Transaction splitting (etkin veya devre dışı) ve Read weight allocation (System-assigned veya özel ağırlıklar) seçeneklerini de yapılandırabilirsiniz.

API referansı


API


Açıklama


DescribeDBProxy


Bir RDS örneği için veritabanı ara sunucusunun ayrıntılarını sorgular.


DescribeDBProxyEndpoint


Bir RDS örneğinin ara sunucu uç noktaları hakkında bilgi sorgular.


ModifyDBProxyEndpoint


Bir RDS örneği için bir ara sunucu uç noktasının yapılandırmasını değiştirir.

Temel kavramlar

  • kısa ömürlü bağlantı: Yalnızca kısa bir süre boyunca sürdürülen bağlantı. Örneğin, bir PHP uygulaması basit bir sorgu yürüttükten sonra bağlantıyı kapatır. Bu yaklaşım, bir bağlantının uzun süre meşgul edilmesini önler ancak her istek için yeni bir bağlantı kurulmasını gerektirerek veritabanının ana iş parçacığı üzerindeki yükü artırır.

  • kalıcı bağlantı: Uzun bir süre boyunca sürdürülen bağlantı. Örneğin, bir web sunucusu veya uygulama sunucusu bir MySQL sunucusuna birçok bağlantı açar ve istemci durana kadar bunları açık tutar. Bu durum, yeni bağlantı isteklerini en aza indirerek ana iş parçacığı yükünü azaltır ancak bir bağlantı kanalını uzun süre meşgul eder.

SSS

S: Kaç bağlantıda bağlantı havuzunu etkinleştirmeliyim?

C: Bağlantı sayısı MySQL sınırına yaklaştığında işlem düzeyinde bağlantı havuzunu etkinleştirmenizi öneririz.

S: Bir bağlantı bağlantı havuzunda ne kadar süre tutulur?

C: 10 saniye.

S: Bağlantı havuzu kullanmak örnek performansını etkiler mi?

C: Kısa ömürlü bağlantıların olduğu senaryolarda bağlantı havuzunu etkinleştirmek örnek performansını yaklaşık %10 oranında iyileştirebilir.

S: İşlem düzeyinde ve oturum düzeyinde bağlantı havuzu arasındaki işlevsel fark nedir?

C: İşlem düzeyinde bağlantı havuzu hem ana iş parçacığı yükünü hem de toplam bağlantı sayısını azaltır. Oturum düzeyinde bağlantı havuzu yalnızca ana iş parçacığı yükünü azaltır.

S: İşlem düzeyinde ve oturum düzeyinde bağlantı havuzu çalışma biçimleri açısından nasıl farklılık gösterir?

C:


Bağlantı havuzu türü


Oturum paylaşımı


Alım zamanı


İade zamanı


Bağlantı eşleme


İşlem düzeyinde


Evet


Bir işlem işlendiğinde


Bir işlem işlendikten sonra (oturum hala aktif olabilir)


N:1


Oturum düzeyinde


Hayır


Bir oturum kurulduğunda


Oturum sonlandığında


N:N

S: Veritabanı ara sunucusu bağlantısı kesildi. Bunun nedeni hem uygulamanın hem de veritabanı ara sunucusunun bağlantı havuzu kullanması mı?

C: Bir bağlantı, mutlaka hem uygulamanın hem de ara sunucunun bağlantı havuzu kullanmasından kaynaklanmak zorunda olmayan birçok nedenden dolayı kesilebilir. Kök neden, belirli iş yükünüze ve yapılandırmanıza bağlıdır.