خلاصهٔ خبر
گروه توسعهٔ PostgreSQL در سپتامبر ۲۰۲۴ نسخهٔ ۱۷ را منتشر کرد. این نسخه تمرکز زیادی بر کارایی دارد: مصرف حافظهٔ VACUUM کاهش یافته، نوشتن در WAL برای بار همزمان بالا بهینه شده و چند الگوی پرتکرار کوئری سریعتر اجرا میشود. بخش مهمی از این بهبودها بدون تغییر در کد برنامه اثر میگذارد. برای تیمهایی که پایگاهدادهٔ پرترافیک نگه میدارند، ارتقا میتواند هزینهٔ منابع را کم کند.
جزئیات
مهمترین تغییر، ساختار حافظهٔ جدید VACUUM است. پیشتر فهرست ردیفهای مرده در حافظه سقف یک گیگابایت داشت و در جداول بزرگ گاهی چند دور پیمایش ایندکسها لازم میشد. ساختار جدید این سقف را برمیدارد و طبق اعلام پروژه مصرف حافظه را تا حدود ۲۰ برابر کم میکند. حاصل کار، اجرای سریعتر و کمفشارتر autovacuum روی جداول حجیم است.
در بخشهای دیگر، API جدید streaming I/O خواندن ترتیبی و عملیات ANALYZE را بهبود داده و بهینهسازیهای WAL طبق اعلام پروژه در بارهای همزمان سنگین تا حدود دو برابر توان نوشتن میدهد. در سطح کوئری هم جستوجوی چندمقداری با IN روی ایندکس B-tree کارآمدتر شده، آمار ستونها برای CTEها در دسترس بهینهساز است و برخی زیرکوئریهای همبسته بهتر برنامهریزی میشوند. ساخت ایندکس BRIN هم میتواند موازی انجام شود. این اعداد از سناریوهای مشخص آمدهاند و نتیجهٔ واقعی به الگوی بار هر سیستم بستگی دارد.
اهمیت برای تیمهای ایرانی
بسیاری از تیمهای ایرانی روی سرورهای محدود و سختافزار گران کار میکنند، پس کاهش مصرف حافظه و I/O برایشان ارزش عملی دارد. پیشنهاد ما این است که ارتقا را با pg_upgrade ابتدا روی محیط آزمایشی انجام دهید، با ترافیک و کوئریهای واقعی خودتان بنچمارک بگیرید و سازگاری افزونهها را بررسی کنید. چون دسترسی به مخازن رسمی بستهها همیشه پایدار نیست، بستههای لازم را از پیش در یک مخزن داخلی نگه دارید. پس از ارتقا هم داشبوردهای مانیتورینگ، بهویژه زمان VACUUM و تأخیر نوشتن، را با مقادیر قبلی مقایسه کنید تا اثر واقعی تغییر روشن شود.