Veritabanı bağlantı havuzunun kavramını, ilkesini, çalışma mekanizmasını vb. Ayrıntılı olarak açıklayın.

Genel Bakış

Veritabanı bağlantı havuzu, veritabanı bağlantılarının tahsis edilmesinden, yönetilmesinden ve serbest bırakılmasından sorumludur ve uygulamaların mevcut bir veritabanı bağlantısını yeniden kurmak yerine yeniden kullanmasına izin verir. Peki çalışma mekanizması nedir? Bugün esas olarak veritabanı bağlantı havuzu ve yaygın olarak kullanılan bağlantı havuzu prensibini tanıtıyoruz.

01

Neden bağlantı havuzunu kullanmalısınız?

Veritabanı bağlantısı, özellikle çok kullanıcılı web uygulamalarında öne çıkan kritik, sınırlı ve pahalı bir kaynaktır. Bir veritabanı bağlantı nesnesi, fiziksel bir veritabanı bağlantısına karşılık gelir Her işlem fiziksel bir bağlantı açar ve kullanımdan sonra bağlantıyı kapatır, bu da sistem performansının düşmesine neden olur.

Veritabanı bağlantı havuzunun çözümü, uygulama başlatıldığında yeterli veritabanı bağlantısı kurmak ve uygulama tarafından dinamik olarak bir bağlantı havuzu oluşturmak için bu bağlantılardan bahsetmektir (basitçe söylemek gerekirse: çok sayıda yarı bitmiş veritabanı bağlantı nesnesini bir "havuza" koyun) Havuzda bağlantıları uygulayın, kullanın ve bırakın. Bağlantı havuzundaki bağlantı sayısından fazla olan eşzamanlı istekler için, istek kuyruğunda sıraya alınmaları gerekir. Uygulama, havuzdaki bağlantıların kullanım oranına göre havuzdaki bağlantı sayısını dinamik olarak artırabilir veya azaltabilir.

Bağlantı havuzu teknolojisi, olabildiğince çok bellek kaynağını yeniden kullanır, büyük ölçüde bellek tasarrufu sağlar, sunucu hizmeti verimliliğini artırır ve daha fazla müşteri hizmetini destekleyebilir. Bağlantı havuzunu kullanarak programın verimliliği büyük ölçüde artırılacak, aynı zamanda veritabanı bağlantılarının sayısını ve kullanımını kendi yönetim mekanizması üzerinden izleyebiliyoruz.

02

Geleneksel bağlantı mekanizması ile veritabanı bağlantı havuzu işletim mekanizması arasındaki fark

1. Bağlantı havuzu işlemi yok

SQL komutunu çalıştırmak için örnek olarak MySQL erişimini ele alalım Bağlantı havuzu kullanılmıyorsa, hangi işlemlerin geçmesi gerekir.

Veritabanı bağlantı havuzunu kullanmama adımları:

  • TCP bağlantısı kurulması için üç yönlü anlaşma
  • MySQL kimlik doğrulaması için üç yönlü el sıkışma
  • Gerçek SQL yürütme
  • MySQL kapatma
  • TCP'nin dört yönlü anlaşması kapatıldı
  • Bir SQL parçasını çalıştırmak için çok sayıda ağ etkileşimi olduğu görülebilir.

    avantaj:

    • Uygulaması basit

    Dezavantajları:

    • Daha fazla ağ IO
    • Veritabanı yükü yüksek
    • Uzun yanıt süresi ve düşük QPS
    • Uygulamalar sıklıkla bağlantılar oluşturur ve kapatır, bu da birçok geçici nesneye ve sık sık GC'ye neden olur
    • Bağlantı kapatıldıktan sonra, çok fazla TIME_WAIT TCP durumu olacaktır (2 MSL'den sonra kapandı)

    2. Bağlantı havuzu sürecini kullanın

    Veritabanı bağlantı havuzunu kullanma adımları:

    İlk ziyaretinizde bir bağlantı kurmanız gerekir. Ancak, sonraki ziyaretler önceden oluşturulan bağlantıyı yeniden kullanacak ve SQL ifadelerini doğrudan yürütecektir.

    avantaj:

    • Daha az ağ ek yükü
    • Sistemin performansı önemli ölçüde iyileştirilecek
    • Sorun yok TIME_WAIT durumu

    03

    Veritabanı bağlantı havuzu nasıl çalışır?

    Bağlantı havuzunun çalışma prensibi esas olarak üç bölümden oluşmaktadır:

    • Bağlantı havuzu kurulması
    • Bağlantı havuzundaki bağlantıların kullanım yönetimi
    • Bağlantı havuzu kapatma

    İlk olarak bağlantı havuzunun kurulması.

    Genelde sistem başlatıldığında sistem konfigürasyonuna göre bağlantı havuzu kurulacak ve kullanım sırasında bağlantı havuzundan elde edilebilmesi için havuzda birkaç bağlantı nesnesi oluşturulacaktır. Bağlantı havuzundaki bağlantı keyfi olarak oluşturulamaz ve kapatılamaz, bu da bağlantının rastgele kurulması ve kapatılmasının neden olduğu sistem yükünü önler.

    Java, Vector, Stack, vb. Gibi bağlantı havuzlarını kolayca oluşturmak için birçok konteyner sınıfı sağlar.

    İkincisi, bağlantı havuzunun yönetimi.

    Bağlantı havuzu yönetim stratejisi, bağlantı havuzu mekanizmasının temelini oluşturur.Bağlantı havuzundaki bağlantıların tahsisi ve serbest bırakılması, sistemin performansı üzerinde büyük bir etkiye sahiptir. Yönetim stratejisi:

    Bir istemci bir veritabanı bağlantısı istediğinde, önce bağlantı havuzunda boşta bir bağlantı olup olmadığını kontrol edin.Boşta bir bağlantı varsa, bağlantı kullanım için istemciye tahsis edilir; boşta bir bağlantı yoksa, o anda açık olan bağlantı sayısının maksimum bağlantı sayısına ulaşıp ulaşmadığını kontrol edin. Ulaşılmazsa, istekte bulunan istemciye yeniden bağlantı kurar; ulaşılırsa belirlenen maksimum bekleme süresine göre bekler; maksimum bekleme süresi aşılırsa istemciye bir istisna atılır.

    İstemci veri tabanı bağlantısını serbest bıraktığında, önce bağlantının referans sayısının belirtilen değeri aşıp aşmadığını belirleyin, aşarsa bağlantı havuzundan bağlantıyı silin, aksi takdirde diğer müşteri hizmetleri için ayrılacaktır.

    Bu strateji, veritabanı bağlantılarının etkili bir şekilde yeniden kullanılmasını sağlar ve bağlantıların sık kurulup bırakılmasının neden olduğu sistem kaynaklarının ek yükünü önler.

    Üçüncüsü, bağlantı havuzu kapalıdır.

    Uygulama çıkıldığında, bağlantı havuzundaki tüm bağlantılar kapatılır ve bağlantı havuzuyla ilgili kaynaklar serbest bırakılır.Bu işlem, oluşturma işleminin tam tersidir.

    04

    Bağlantı havuzu hakkında dikkat edilecek noktalar

    1. Eşzamanlılık sorunları

    Bağlantı yönetimi hizmetinin çok yönlülüğünü en üst düzeye çıkarmak için, çok iş parçacıklı bir ortam, yani eşzamanlılık sorunları dikkate alınmalıdır.

    Bu sorunun çözülmesi nispeten kolaydır, çünkü her dilin kendisi java, c #, vb. Gibi eşzamanlılık yönetimi için destek sağlar ve senkronize edilmiş (java) kilit (C #) anahtar kelimesinin kullanılması iş parçacıklarının senkronize edilmesini sağlayabilir.

    2. İşlem işleme

    İşlemlerin atomik olduğunu biliyoruz. Şu anda, veritabanının işleyişinin "HER ŞEY VEYA HİÇBİR ŞEY" prensibine uyması, yani, bir dizi SQL ifadesinin hepsini yapıp yapmama zorunluluğu vardır.

    İki iş parçacığı bir bağlantı Bağlantı nesnesini paylaştığında ve her birinin işlenecek kendi işlemi olduğunda, bağlantı havuzu için bir baş ağrısı olduğunu biliyoruz, çünkü Connection sınıfı karşılık gelen işlem desteğini sağlasa bile bundan emin olamayız Veritabanı işlemi, işlem işleminde 2 iş parçacığına sahip olmamızdan kaynaklanan bu işleme karşılık gelir.

    Bu amaçla, her işlemi bir bağlantıyı elde etmek için tekelleştirmek için kullanabiliriz, ancak bu yöntem biraz bağlantı havuzu kaynakları israfıdır, ancak işlem yönetiminin karmaşıklığını büyük ölçüde azaltabilir.

    3. Bağlantı havuzunun tahsisi ve serbest bırakılması

    Bağlantı havuzunun tahsisi ve serbest bırakılması, sistemin performansı üzerinde büyük bir etkiye sahiptir. Makul tahsis ve serbest bırakma, bağlantıların yeniden kullanımını artırabilir, böylece yeni bağlantı kurma yükünü azaltır ve aynı zamanda kullanıcı erişimini hızlandırabilir.

    Bağlantı yönetimi için bir Liste kullanılabilir. Yani, birleşik yönetim için oluşturulan tüm bağlantıları Listeye koyun. Bir kullanıcı bir bağlantı istediğinde, sistem bu listede tahsis edilebilecek herhangi bir bağlantı olup olmadığını kontrol eder. Varsa ona en uygun bağlantıyı atayın, yoksa kullanıcıya bir istisna atın.

    4. Bağlantı havuzunun konfigürasyonu ve bakımı

    Sistemin performansını en üst düzeye çıkarmak için bağlantı havuzuna kaç bağlantı yerleştirilmelidir?

    Sistem, bağlantı havuzundaki bağlantıları kontrol etmek için minimum bağlantı sayısı (minConnection) ve maksimum bağlantı sayısı (maxConnection) gibi parametreleri ayarlayabilir . Örneğin, minimum bağlantı sayısı, sistem başladığında bağlantı havuzu tarafından oluşturulan bağlantı sayısıdır. Çok fazla oluşturursanız, sistem yavaş başlayacak, ancak sistem oluşturulduktan sonra hızlı yanıt verecektir; çok az oluşturursanız, sistem hızlı başlayacak, ancak yanıt yavaş olacaktır. Bu şekilde, geliştirme sırasında daha az sayıda minimum bağlantı ayarlayabilirsiniz ve geliştirme daha hızlı olur ve sistem gerçekten kullanıldığında daha büyük bir bağlantı kurar çünkü müşterileri ziyaret etmek için daha hızlı olacaktır. Maksimum bağlantı sayısı, bağlantı havuzunda izin verilen maksimum bağlantı sayısıdır.Özel ayar, sistem erişimi miktarına bağlıdır ve yazılım gereksinimleri aracılığıyla elde edilebilir.

    Bağlantı havuzunda minimum bağlantı sayısı nasıl sağlanır? Dinamik ve statik olmak üzere iki strateji vardır. Dinamik, bağlantı havuzunun her belirli zamanda kontrol edildiği anlamına gelir. Bağlantı sayısının minimum bağlantı sayısından az olduğu tespit edilirse, bağlantı havuzunun normal çalışmasını sağlamak için karşılık gelen sayıda yeni bağlantı eklenecektir. Statik, boşta bağlantının yeterli olmadığını kontrol etmektir.

    sonuç olarak

    Günümüzde her uygulama (RDBMS gerektiren) bağlantı havuzundan ayrılamaz olsa da, fiili kullanımda bağlantı havuzu zaten "görünmez" olabilir. Diğer bir deyişle, normal şartlar altında bağlantı havuzunun ilk yapılandırması tamamlandıktan sonra herhangi bir değişiklik yapmaya gerek yoktur.

    Daha sonra daha fazla devop ve DBA içeriği paylaşacağım ve ilgilenen arkadaşlar buna dikkat edebilir ~

    Teyze sabah 5'te sıraya girdi, raflar bitti, dünyanın en büyük "fakir süpermarketi" Çin'e açıldı
    önceki
    Jack Ma bir hamle daha yapıyor! Alipay sınır ötesi yolculuk merhaba, sadece kurye kardeşini şarj etmek için 1 milyar harcıyor mu?
    Sonraki
    Cumartesi avantajları! PG essentials-PG veritabanı çekirdek analizi koleksiyonunun derinlemesine incelenmesi
    Bu gece sabah ışığı uykusuz! Bir cep telefonu üreticisi olabilir
    IP adresi, alt ağ maskesi, ağ numarası, ana bilgisayar numarası, ağ adresi, ana bilgisayar adresi hakkında ayrıntılı açıklama
    Büyük hacim! CIFI'nin Chang'an Bölgesi'nin ilk planı ortaya çıktı! 9.423 kişi kapasiteli 56 konut yapmayı planlayın
    JD 618 pazarlama yeni trendi: topluluk merdiveni medyası, e-ticaret savaşının ikinci yarısında ana savaş alanı haline geldi
    Süper detaylı tomcat izleme artefakt-Psi Probe işlevi tanıtımı, toplamaya değer
    Xinluo Caddesi ve Foshan Caddesi resmi olarak trafiğe açıldı
    Sanal bir makinede sabit bir IP'nin nasıl yapılandırılacağını ayrıntılı olarak açıklayın - ana bilgisayara ping atabilir ve herhangi bir konumdan İnternet'e erişebilirsiniz.
    MyISAM ve InnoDB arasındaki farkı ve uygulama senaryolarını açıklayın
    Dong Mingzhu Oaks kıstırıyor, Lei Jun bir nefeste çeşitli yeni ürünler piyasaya sürüyor ve trilyonlarca ev aleti canlanıyor
    Mysql veritabanı indeksinin uygulama prensibini ayrıntılı olarak açıklayın - BTree indeksi, hash, tam metin indeksi vb.
    48 yaşındaki kurye teyzesi diz çöktü: Şeytani müşteri, kurtulmaya hevesli şirket, çalışanların haysiyetini hadım etti
    To Top