Connection Pooling Pgbouncer nima?Assalamu Aleykum azizlar!. Men
Mukhammad Irmatov postlaridan kelib chiqib Pgbouncer haqida qisqacha ma'lumot berib o'tmoqchi edim.
Yuqoridagi postda aytib o'tilganidak
Postrgesql har bir kiruvchi client request uchun connection yaratadi. Har bir connection uchun serverdan joy ajratiladi. Qarabsizki 100ta request va 100ta connection, bundan kelib chiqadiki resource to'ladi va
PostgreSQL resourlar to'lguncha request larga connection ochib klientlarga javob bera oladi. Bu model
Client-Server arxitekturasi deb nomlanadi, albatta sekin, effektivniy hisoblanmaydi. Shuning uchun
Connection pool bizga yordam beradi. Bunga bitta misol
PostgreSQL uchun albatta
PgBouncer.
Pgbouncer bu
Connection pool ga javob beruvchi, klient va DB o'rtasida turuvchi middleware protses hisoblanadi. Mijoz
Pgbouncerga ulanadi va bir vaqtda pgbouncer DBga ulanadi.
Pgbouncer o'ziga katta miqdorda connection so'rovlarni qabul qiladi va pooling yordamida bazaga bo'lgan haqiqiy connectionlarni kamaytiradi. Bunda http requestlarimiz tez ishlashni ham boshlaydi. Sababi har bir kiruvchi http request uchun yangi haqiqy connection ochilmaydi va yopilmaydi,
CPU va
Memorydan joy ajratilmaydi, bundan kelib chiqadiki baza requestlarni avvalgi holatiga qaraganda tezroq handling qiladi.
PgBouncerni 3 turdagi pool_mode mavjud.
Bular:
1.
Session - mijoz sessiyani uzgandan so'ng connection poolga qaytarib beriladi.
2.
Transaction - har bir tugatilgan transactiondan so'ng connection poolga qaytadi.
3.
Statement - har bir sql so'rovdan so'ng connection poolga qaytadi.
Connection poolga qaytadi va boshqa kirib keluvchi requestlarga javob berishi mumkun bo'ladi. Ko'pgina hollarda
Tranction pool_mode ishlatilish tavsiya beriladi.