برنامه نویسی

بهتر کردن postgres با orioledb

یکی از بزرگترین مزایای Postgres بیش از بسیاری از DBMS های دیگر وجود دارد که این واقعیت وجود دارد که بدون نیاز به تعامل با پایگاه اصلی ، از طریق پسوندها ، به پیشرفت های خارجی یا ویژگی های جدید اجازه می دهد. پسوندهای زیادی با هدف منحصر به فرد وجود دارد (من همچنین دو پسوند بی اهمیت PG_WAL_EXT و PG_TABLE_BLOAT نوشتم)

یکی از پسوند هایی که به خصوص برجسته است ، OrioledB است. این یک موتور ذخیره سازی جایگزین برای Postgres فراهم می کند. Postgres فقط با یک موتور ذخیره سازی بر اساس پشته همراه است. این با MySQL متفاوت است که دارای چندین موتور ذخیره سازی است: InnoDB ، Myissam و غیره.

موتور ذخیره سازی مبتنی بر پشته در بیشتر موارد به خوبی کار می کند اما همچنین تعدادی از موارد را ارائه می دهد ، برخی از آنها عبارتند از: Bloat معرفی شده توسط نحوه رسیدگی به روزرسانی ها ، نیاز به جمع آوری زباله (خلاء) ، بسته بندی معامله

اوریولدب با قول حل مسائل ارائه شده توسط Postgres Heap همراه است. من آن را آزمایش کردم و نتایج بسیار خوب بود. فرآیندی را که استفاده کردم و نتایج زیر را شرح خواهم داد.

ابتدا به یک نسخه وصله دار Postgres نیاز دارید: 16 (برچسب: patches16_33) یا 17 (برچسب: patches17_5). مراحل در GitHub موجود است

این آزمون فقط برای بار کاری در 16 جدول با هر یک از 25 متر سوابق (تقریباً 94 گیگابایت برای هر تنظیم) است. من از سرور با رم 64 گیگابایتی ، 20cores و 500 گیگابایت NVME SSD (سیستم فایل EXT4) استفاده کردم. من از اسکریپت های راه اندازی خود برای ساخت و نصب Postgres استفاده می کنم. ابزار معیار مورد استفاده Sysbench است. orioledb مورد استفاده از منبع از تعهد اصلی شاخه ساخته شده است 0c484c4بشر

مراحل نصب برای orioledb:

# Install dependencies
apt update
apt install python3 python3-dev python3-pip python3-setuptools python3-testresources libzstd1 libzstd-dev libssl-dev libcurl4-openssl-dev

git clone https://github.com/orioledb/orioledb
cd orioledb
git reset --hard 0c484c4 # optional
make USE_PGXS=1 ORIOLEDB_PATCHSET_VERSION=5
echo "shared_preload_libraries="orioledb.so"" >> /usr/local/pgsql/data/postgresql.conf
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

استخر بافر برای هر دو تنظیم روی 16 گیگابایت IE تنظیم شده است shared_buffers برای پشته و orioledb.main_buffers برای orioledb

برای اجرای تست های واقعی ، من از https://github.com/misachi/sysbench-graphing-tests استفاده کردم. هنگامی که همه چیز تنظیم شد ، در حال اجرا است ./run.threads pgsql باید تست ها را اجرا کند. اسکریپت تضمین می کند که پایگاه داده قبل از اجرای تست ها گرم شود.

من برای هر مجموعه 2 رکورد انجام دادم: 2 اجرا از پس از پشته و 2 اجرا از پس از پس از آن با پسوند orioledb. نتایج همانطور که در زیر نشان داده شده است

نتیجه

با برچسب اجرا می شود out/res2 وت out/res3 نتایج را برای اجرای Postgres معمولی با موتور ذخیره سازی مبتنی بر پشته نشان دهید res4 وت res5 نتایج را برای postgres با orioledb نشان دهید.

بیت چشمگیر ، orioledb قادر است ضمن استفاده از منابع کمتری از CPU و حافظه ، از Peepgres Heap استفاده کند. این را می توان تا حدودی به صفحه بدون قفل Oioledb نسبت داد و از این رو باعث کاهش مشاجره شد.

استفاده از حافظه (MB) برای پشته های پس از

پشته

استفاده از CPU برای Heap Postgres

پشته

استفاده از حافظه (MB) برای orioledb

رفیق

استفاده از CPU برای orioledb

رفیق

نوشته های مشابه

دیدگاهتان را بنویسید

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

دکمه بازگشت به بالا