مسعود سلطانی راد
مسعود سلطانی راد
خواندن ۲ دقیقه·۲ سال پیش

بهبود کارایی پایگاه داده پستگرس (Postgresql)

در هر پایگاه داده ای و از هر نوعی، یکی از مهمترین دغدغه ها بهبود کارایی آن می باشد مخصوصا که در پایگاه داده های عملیاتی، باتوجه ورود داده ها و تغییرات آنها، این مسئله پررنگ تر می شود. باید به این نکته اشاره کرد که بهبود کارایی پایگاه داده به عوامل متعددی وابسته است و حتی 20 تا 30 درصد مواردی که در این حوزه اجرا می گردد خاص منظوره یک پایگاه داده در یک شرایط محیطی خود می باشد پس برای هر پایگاه داده باید جداگانه تصمیم گیری شود و پایگاه داده های پستگرس هم از این قانون پیروی می کنند.

آیا نمی شود برخی از تنظیمات رو در ابتدا از حالت پیش فرض تغییر داد تا بعدا در صورت لزوم تغییرات بعدی را انجام داد؟
جواب این سئوال "بله" می باشد. در پایگاه داده پستگرس این امر را می توان به راحتی انجام داد و تنظیمات پیش فرض مانند میزان حافظه اختصاص یافته به instance پایگاه داده به تفکیک بافرها، تعداد حداکثر connection و ... را تغییر داد.

برای اینکار استفاده از ابزار pgtune که به صورت رایگان در دسترس می باشد توصیه می گردد.

https://github.com/le0pard/pgtune

شما یا می توانید آن را بر روی سرور خود اجرا کنید تا تنظیمات پیشنهادی خود را به شما بدهد یا ی توانید از برخی سایت ها که به صورت آنلاین این قابلیت رو به شما می دهند استفاده کنید. اطلاعات مورد نیاز را به سایت می دهید و تنظیمات پیشنهادی را دریافت می کنید.

https://pgtune.leopard.in.ua/

این نکته را اشاره کنیم که راهبر پایگاه داده در هرصورت باید در خصوص استفاده از این تنظیمات پیشنهادی تصمیم بگیرد.

به یک نمونه از تنظیمات پیشنهادی توجه کنید:

تنظیمات مربوط به پایگاه داده با مشخصات زیر می باشد

  • ورژن 15
  • سیستم عامل لینوکس
  • فضای ذخیره ساز از نوع SSD
  • میزان حافظه (RAM ) ماشین 12GB
  • تعداد CPU ماشین 10 عدد
  • نوع پایگاه داده OLTP
  • حداکثر connection به پایگاه داده 50 عدد

تنظیمات پیشنهادی :

# DB Version: 15

# OS Type: linux

# DB Type: oltp

# Total Memory (RAM): 12 GB

# CPUs num: 10

# Connections num: 50

# Data Storage: ssd

max_connections = 50

shared_buffers = 3GB

effective_cache_size = 9GB

maintenance_work_mem = 768MB

checkpoint_completion_target = 0.9

wal_buffers = 16MB

default_statistics_target = 100

random_page_cost = 1.1

effective_io_concurrency = 200

work_mem = 15728kB

min_wal_size = 2GB

max_wal_size = 8GB

max_worker_processes = 10

max_parallel_workers_per_gather = 4

max_parallel_workers = 10

max_parallel_maintenance_workers = 4


پایگاه داده پستگرسpostgresql databaseآموزش postgresqlمشاوره postgresqlمسعود سلطانی راد
چند سالی هست در حوزه داده ها ( نگهداری و تحلیل آنها) فعالیت دارم و همیشه سعی کردم آموخته هایم رو به اشتراک بگذارم soltanirad@artarad.ir www.artarad.ir
شاید از این پست‌ها خوشتان بیاید