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.
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.
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ı:
Bir SQL parçasını çalıştırmak için çok sayıda ağ etkileşimi olduğu görülebilir.
avantaj:
Dezavantajları:
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:
Bağlantı havuzunun çalışma prensibi esas olarak üç bölümden oluşmaktadır:
İ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.
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.
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 ~