انتشار PostgreSQL 15 DBMS

پس از یک سال توسعه، یک شاخه پایدار جدید از PostgreSQL 15 DBMS منتشر شده است. به‌روزرسانی‌های شاخه جدید طی پنج سال تا نوامبر 2027 منتشر خواهد شد.

نوآوری های اصلی:

  • پشتیبانی از دستور SQL "MERGE" اضافه شد که شبیه عبارت "INSERT ... ON CONFLICT" است. MERGE به شما امکان می دهد عبارات SQL شرطی ایجاد کنید که عملیات INSERT، UPDATE و DELETE را در یک عبارت واحد ترکیب می کند. به عنوان مثال، با استفاده از MERGE، می توانید دو جدول را با درج رکوردهای از دست رفته و به روز رسانی موارد موجود ادغام کنید. ادغام INTO customer_account ca با استفاده از last_transactions t ON t.customer_id = ca.customer_id WHEN MATCHEN سپس به روز رسانی SET موجودی = موجودی +transaction_value هنگامی که مطابقت ندارد سپس درج (customer_id, موجودی) VALUES (t.customer_action_value);
  • الگوریتم های مرتب سازی داده ها در حافظه و روی دیسک به طور قابل توجهی بهبود یافته است. بسته به نوع داده ها، آزمایش ها افزایش سرعت مرتب سازی را از 25٪ به 400٪ نشان می دهد.
  • توابع پنجره با استفاده از row_number()، rank()، dense_rank() و count() تسریع شده اند.
  • امکان اجرای موازی کوئری ها با عبارت SELECT DISTINCT پیاده سازی شده است.
  • مکانیسم اتصال جداول خارجی Foreign Data Wrapper (postgres_fdw) علاوه بر توانایی قبلی اضافه شده برای پردازش ناهمزمان درخواست‌ها به سرورهای خارجی، از تعهدات ناهمزمان پشتیبانی می‌کند.
  • قابلیت استفاده از الگوریتم‌های LZ4 و Zstandard (zstd) برای فشرده‌سازی گزارش‌های تراکنش WAL اضافه شده است، که تحت برخی از بارهای کاری، می‌تواند به طور همزمان عملکرد را بهبود بخشد و فضای دیسک را ذخیره کند. برای کاهش زمان بازیابی پس از خرابی، پشتیبانی از بازیابی فعال صفحاتی که در گزارش WAL ظاهر می شوند اضافه شده است.
  • ابزار pg_basebackup پشتیبانی از فشرده‌سازی سمت سرور فایل‌های پشتیبان را با استفاده از روش‌های gzip، LZ4 یا zstd اضافه کرده است. این امکان وجود دارد که از ماژول های خود برای بایگانی استفاده کنید و به شما امکان می دهد بدون نیاز به اجرای دستورات پوسته این کار را انجام دهید.
  • یک سری توابع جدید برای پردازش رشته ها با استفاده از عبارات منظم اضافه شده است: regexp_count()، regexp_instr()، regexp_like() و regexp_substr().
  • قابلیت تجمیع انواع چند دامنه ("multirange") به تابع range_agg() اضافه شده است.
  • حالت security_invoker اضافه شد که به شما امکان می‌دهد نماهایی ایجاد کنید که به‌عنوان کاربر فراخوان اجرا می‌شوند تا ایجادکننده view.
  • برای تکثیر منطقی، پشتیبانی از فیلتر کردن ردیف‌ها و مشخص کردن فهرست‌های ستون‌ها اجرا شده است که به فرستنده اجازه می‌دهد زیرمجموعه‌ای از داده‌ها را از جدول برای تکرار انتخاب کند. علاوه بر این، نسخه جدید مدیریت تضاد را ساده می کند، به عنوان مثال، اکنون می توان از تراکنش های متناقض رد شد و در صورت تشخیص خطا، اشتراک را به طور خودکار غیرفعال کرد. تکرار منطقی امکان استفاده از commit های دو فازی (2PC) را می دهد.
  • یک قالب گزارش جدید اضافه شده است - jsonlog، که اطلاعات را به شکل ساختاریافته با استفاده از فرمت JSON ذخیره می کند.
  • مدیر این توانایی را دارد که حقوق فردی را برای تغییر برخی پارامترهای پیکربندی سرور PostgreSQL به کاربران واگذار کند.
  • ابزار psql پشتیبانی برای جستجوی اطلاعات در مورد تنظیمات (pg_settings) با استفاده از دستور "\dconfig" اضافه کرده است.
  • استفاده از حافظه مشترک برای جمع آوری آمار در مورد عملکرد سرور تضمین شده است، که این امکان را فراهم می کند تا از فرآیند جداگانه جمع آوری آمار و بازنشانی دوره ای وضعیت به دیسک خلاص شوید.
  • امکان استفاده از زبان‌های پیش‌فرض ICU "ICU Collation" فراهم شده است؛ قبلاً، فقط محلی‌های libc می‌توانست به عنوان محلی پیش‌فرض استفاده شود.
  • یک پسوند داخلی pg_walinspect پیشنهاد شده است که به شما امکان می دهد محتویات فایل ها را با سیاهه های WAL با استفاده از پرس و جوهای SQL بررسی کنید.
  • برای طرح عمومی، همه کاربران، به استثنای مالک پایگاه داده، اختیار اجرای دستور CREATE را لغو کرده اند.
  • پشتیبانی از Python 2 در PL/Python حذف شده است. حالت پشتیبان انحصاری منسوخ حذف شده است.

علاوه بر این: از ساعت 19:00 تا 20:00 (MSK) یک وبینار در مورد تغییرات در نسخه جدید با پاول لوزانوف (Postgres Professional) برگزار می شود. برای کسانی که قادر به پیوستن به پخش نیستند، ضبط گزارش پاول در ژوئن "PostgreSQL 15: MERGE and more" در PGConf.Russia باز است.

منبع: opennet.ru

اضافه کردن نظر