Connection Pooling Nedir ? Neden Kullanılır ?

  1. newbie
    13
    280
    7/7/2018 5:57:00 PM

    Connection string içinde aşağıdaki yer alan bağlantım da da olduğu gibi Pooling=true diye bir ayar gördüm , bunu biraz araştırdığım da , true parametresi Connection Pooling i aktif etmek için miş.

       <connectionStrings>
            <add name="sqlConnectionString" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=Emlak;Integrated Security=True;Connection Timeout=15;Connection Lifetime=0;Min Pool Size=0;Max Pool Size=100;Pooling=true;"/>
    </connectionStrings>
    

    Şimdi sorum şu , Connection Pooling nedir ? aktif etmeye gerek var mı , false ile kapatsam daha mı iyi olur ?

    c# sql-server 4 ay önce 269 Görüntüleme

( 1 ) Cevap

  1. Snoopy
    15
    8436
    7/7/2018 6:58:00 PM

    Belirtmemişsin ama , az çok kestirdiğim üzere , Ado.Net ile bağlantı kuruyorsun.

    Şimdi , Connection Pooling , ADO.NET in kullandığı bir optimizasyon tekniğine denir , peki neyi optimize ediyor buna bakalım.

    Şimdi yazılımın dışına çıkalım.Bir fabrikan var , araba olsun.Sistemin şu , ya sıfır araba veriyorsun , yada arabaları kiralıyorsun , elinde de bir garajın var , kiralıktan geri gelen arabaları orada tutuyorsun.

    Yeni bir araba üretip teslim etmek mi daha kısa zamanda olur , yoksa var olan arabayı garajdan çıkarıp vermek mi.

    Dönelim bizim yazılım dünyamıza. ADO.NET de yeni bir connection isteği geldiğinde defalarca aynı işlemi yapmak yerine , daha önce oluşturulan bağlantıları bir havuzda tutarak aynı bağlantı isteği tekrar geldiğinde bu havuzdan bağlantıyı verir.Temel mantık budur.

    C sharp tarafında diyelim ki , connection open metodunu çağırdın.Pooler önce havuza bir bakar , havuza atılmış müsait bir bağlantı var mı diye , varsa yeni bir bağlantı maliyetine girmez , uygun bağlantıyı verir. Daha sonra işin bitti , connection close operasyonunu yaptın , Pooler bağlantıyı havuza atıldı diye set eder , ama bağlantıyı kapatmaz.Bağlantımız havuzdadır artık , kullanıcının bir dahaki connection open işlemi için hazır olarak beklemektedir.

    ADO.NET default olarak Connection Pooling aktiftir.Sen yukar da belirttiğin gibi false yapmadığın müddetçe.Şimdi kapatayım mı diye sormuşsun , efektif bir optimizasyona sahipken , bundan vazgeçmek istemezsin herhalde ?

    • swarchitect gayet açıklayıcı bir cevap , yanlız biraz zamandan tasarruf ağırlıklı olmuş , bu mimari de sade süreden tasarruf değil , ram , cpu gibi maliyetlerden de tasarruf sağlanır

    • Yorum Ekleyin

Cevabınız