پایگاههای دادهای ویراوب۱۲۳ و PostgreSQL با مجموعهای از پیکربندیهای پیشفرض طراحی شدهاند که به خوبی روی سختافزارهایی با اندازه محدود عمل میکنند. با سفارشی کردن تنظیمات و پیکربندی برای حجم کاری خاص و محیط سخت افزاری، فضای زیادی برای بهبود وجود دارد. ممکن است تعجب کنید که چقدر می توانید با تنظیم چند پیکربندی پارامتر پایگاه داده، افزایش عملکرد را به دست آورید.
در وبلاگی که اخیراً توسط همکاران ما منتشر شده است، «معیارهای PostgreSQL TPROC-C: PostgreSQL 12 در مقابل PostgreSQL 13 Performance»، هشت برابر بیشتر تراکنش در دقیقه در هر دو نسخه 12.4 و 13.0 PostgreSQL زمانی که به درستی تنظیم شده بود به دست آمد. این کار با استفاده از HammerDB، که یک ابزار تست لود پایگاه داده است و ابزار مناسب برای TPC-C دارد انجام شده است.
توجه به این نکته مهم است که با افزایش تعداد کاربران مجازی، افزایش عملکرد قابل توجه ثابت می ماند.
جدول زیر پارامترهای قابل تنظیم پایگاه داده و تنظیمات مربوطه آنها را که در تست معیار خود استفاده کرده است، فهرست شده است.
تمام تنظیمات دیگر در مقادیر پیش فرض باقی ماندند. آزمایش بر روی یک نمونه
آمازون m5.metal با نسخه 8.2 لینوکس Red Hat Enterprise با 96 vCPU و
حافظه 393216 MiB انجام شد. دایرکتوری داده ها روی هشت دیسک پیکربندی شده
در RAID 10 قرار داشت و اندازه دایرکتوری داده ها 2000 گیگابایت بود. شایان
ذکر است که اثرات تنظیم بر روی بارهای کاری و سخت افزارهای مختلف متفاوت
است و مقادیر انتخاب شده در این مورد مخصوص سخت افزار مورد استفاده برای
معیار بود. کاری که انجام دادیم به عنوان یک پیکربندی تنظیم "شروع" در نظر
گرفته شد (یعنی پیکربندی که ما به کاربران پیشنهاد می کنیم به عنوان نقطه
شروع برای استقرار خود استفاده کنند) برای سرور و حجم کاری خاصی که او
انتخاب کرده بود. تنظیم دقیق بیشتر تنظیمات میتواند به طور بالقوه عملکرد
بالاتری را به همراه داشته باشد.
autovacuum_max_workers |
10 |
autovacuum_vacuum_cost_limit |
3000 |
checkpoint_completion_target |
0.9 |
checkpoint_timeout |
'15min' |
cpu_tuple_cost |
0.03 |
effective_cache_size |
'350GB' |
lc_messages |
'C' |
listen_addresses |
'*' |
log_filename |
'postgresql.log' |
logging_collector |
on |
maintenance_work_mem |
'2GB' |
max_connections |
1700 |
max_wal_size |
'300GB' |
pg_stat_statements.save |
off |
pg_stat_statements.track |
all |
random_page_cost |
1.1 |
shared_buffers |
'100GB' |
shared_preload_libraries |
'pg_stat_statements' |
unix_socket_directories |
'/tmp' |
wal_buffers |
'1GB' |
work_mem |
'128MB' |
بهینه سازی و افزایش کارایی در PostgreSQL 13 و به کار گیری آن در اودوو ۱۶