در پایگاه داده های مختلف، اتصال متعدد کاربران می تواند پاسخ دهی را به تاخیر بیاندازد. برای مثال یک صفحه وب سایت به یک اتصال پایگاه داده نیاز دارد. حال برای باز کردن این صفحه به ازای هربار فراخوانی یا هر کاربر که از این صفحه دیدن می کند، یک اتصال به پایگاه داده ایجاد شده و پس از پایان بارگیری اتصال از بین می رود. با افزایش تعداد کاربران تعداد اتصالات نیز افزایش می یابد که باعث بار اضافی به سیستم می شود. برای رفع این مشکل از تکنیک Connection Pool استفاده می شود.

PgBouncer یک ابزار کمکی برای PostgreSQL که کار Connection Pool را در آن انجام می دهد.

pgbouncer

pgbouncer

از ویژگی های این ابزار می توان به موارد زیر اشاره نمود:

  1. استفاده بسیار محدود از حافظه داخلی در حدود 2K
  2. می توان به آسانی آن را به چند پایگاه داده متصل نمود
  3. برای تغییر تنظیمات نیازی به راه اندازی مجدد آن نیست

در واقع هدف این ابزار کاهش دادن هزینه برقراری اتصال به پایگاه داده است. این ابزار سه حالت کلی برای انجام Connection Pooling دارد:

  1. Session pooling: در این حالت یک اتصال به برنامه کاربر داده می شود و تا زمان پایان درخواست برنامه کاربر اتصال فعال می ماند. پس از پایان درخواست، اتصال به Connection Pool برگردانده می شود. این حالت، تنظیم Default این ابزار است.
  2. Transaction pooling:در این حالت هنگامی که برنامه کاربر درخواست انجام تراکنش بدهد، یک اتصال به او داده می شود و در پایان کار تراکنش اتصال به Connection Pool برگردانده می شود.
  3. Statement pooling: در این حالت به ازای هر Statement یک اتصال به برنامه ی کاربر داده می شود و در پایان اجرا اتصال به Connection Pool برگردانده می شود. در این حالت امکان انجام Multi-Statement یا چند کوئری در یک زمان نخواهد بود.

 

نحوه نصب و استفاده از PgBouncer را در پست بعدی قرار خواهم داد.

منابع:

  1. https://wiki.postgresql.org/wiki/PgBouncer
  2. http://www.enterprisedb.com
facebooktwittergoogle_pluslinkedin

دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

*

*