انتشار PostgreSQL 14 DBMS

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

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

  • پشتیبانی اضافه شده برای دسترسی به داده های JSON با استفاده از عبارات آرایه مانند: SELECT ('{ "postgres": { "release": 14 }}'::jsonb)['postgres']['release']; SELECT * FROM test WHERE جزئیات['attributes']['size'] = '"متوسط"';

    یک نحو مشابه برای داده های کلید/مقدار ارائه شده توسط نوع hstore پیاده سازی شده است. این نحو در ابتدا با استفاده از یک چارچوب جهانی پیاده سازی شد که در آینده ممکن است برای انواع دیگر استفاده شود. مثال برای نوع hstore: INSERT INTO mytable VALUES ('a=>b, c=>d'); h['a'] را از mytable انتخاب کنید. به روز رسانی مجموعه mytable h['c'] = 'جدید';

  • خانواده انواع برای تعریف محدوده با انواع جدید "چند طیفی" گسترش یافته است، که به شما امکان می دهد لیست های مرتب شده ای از محدوده های غیر همپوشانی مقادیر را مشخص کنید. علاوه بر هر نوع محدوده موجود، نوع چند دامنه خود پیشنهاد شده است، برای مثال، نوع "int4range" با "int4multirange" و نوع "daterange" مربوط به "datemultirange" است. استفاده از انواع جدید طراحی پرس و جوهایی را که توالی پیچیده محدوده ها را دستکاری می کنند، ساده می کند. '{[3,7), [8,9)}'::int4multirange; SELECT nummultirange(numrange(1.0, 14.0), numrange(20.0, 25.0));
  • بهینه سازی هایی برای بهبود عملکرد سیستم های با بار بالا که تعداد زیادی از اتصالات را پردازش می کنند، انجام شده است. در برخی از تست ها، افزایش دو برابری در عملکرد مشاهده می شود.
  • کارایی شاخص های B-tree بهبود یافته است و مشکل رشد شاخص زمانی که جداول به طور مکرر به روز می شوند حل شده است.
  • پشتیبانی از حالت انتقال درخواست‌ها در سمت کلاینت (اجرا شده در سطح libpq) که به شما امکان می‌دهد تا سناریوهای پایگاه داده مرتبط با انجام تعداد زیادی عملیات نوشتن کوچک (INSERT/UPDATE/DELETE) را با ارسال درخواست بعدی بدون انتظار نتیجه قبلی این حالت همچنین به سرعت بخشیدن به کار بر روی اتصالات با تاخیرهای طولانی تحویل بسته کمک می کند.
  • قابلیت های پیشرفته برای پیکربندی های توزیع شده شامل چندین سرور PostgreSQL. در اجرای تکرار منطقی، اکنون امکان ارسال تراکنش‌هایی در حالت استریم وجود دارد که در مرحله اجرا هستند که می‌تواند عملکرد تکرار تراکنش‌های بزرگ را به میزان قابل توجهی بهبود بخشد. علاوه بر این، رمزگشایی منطقی داده های دریافت شده در طول تکرار منطقی بهینه شده است.
  • مکانیسم اتصال جداول خارجی Foreign Data Wrapper (postgres_fdw) پشتیبانی از پردازش پرس و جو موازی را اضافه کرده است که در حال حاضر فقط هنگام اتصال به سرورهای PostgreSQL دیگر قابل استفاده است. postgres_fdw همچنین پشتیبانی از افزودن داده ها به جداول خارجی در حالت دسته ای و امکان وارد کردن جداول پارتیشن بندی شده را با تعیین دستورالعمل "IMPORT FOREIGN SCHEMA" اضافه می کند.
  • بهینه سازی هایی برای اجرای عملیات VACUUM (جمع آوری زباله و بسته بندی ذخیره سازی دیسک) انجام شده است. یک حالت پاکسازی اضطراری اضافه شده است که در صورت ایجاد شرایط بسته بندی شناسه تراکنش، عملیات پاکسازی غیر ضروری را نادیده می گیرد. کاهش سربار هنگام پردازش شاخص ها در قالب B-Tree. اجرای عملیات ANALYZE که آمار مربوط به عملکرد پایگاه داده را جمع آوری می کند، سرعت قابل توجهی یافته است.
  • اضافه شدن قابلیت پیکربندی روش فشرده سازی مورد استفاده در سیستم TOAST که وظیفه ذخیره سازی داده های بزرگ مانند بلوک های متن یا اطلاعات هندسی را بر عهده دارد. علاوه بر روش فشرده سازی pglz، TOAST اکنون می تواند از الگوریتم LZ4 استفاده کند.
  • ابزارهای نظارت بر عملکرد DBMS گسترش یافته است. نماهایی برای ردیابی پیشرفت دستورات COPY (pg_stat_progress_copy)، آمار مربوط به اسلات های تکرار (pg_stat_replication_slots) و فعالیت های مربوط به گزارش تراکنش WAL (pg_stat_wal) اضافه شده است. تابع compute_query_id اضافه شده است که به زیرسیستم های مختلف مانند pg_stat_activity و EXPLAIN VERBOSE امکان می دهد تا با اختصاص یک شناسه منحصر به فرد برای هر درخواست، درخواست ها را ردیابی کنند.
  • بهینه‌سازی‌هایی برای بهبود پردازش موازی پرس‌و‌جوها و بهبود عملکرد اجرای همزمان عملیات اسکن رکورد متوالی، اجرای موازی پرس‌و‌جوها در PL/pgSQL با استفاده از دستور "RETURN QUERY" و اجرای موازی پرس‌و‌جوها در " اضافه شده است. REFRESH MATERIALIZED VIEW”. برای بهبود عملکرد ادغام‌های تودرتوی چرخه‌ای (پیوستن)، پشتیبانی از کش اضافی اجرا شده است.
  • اکنون می توان از آمارهای پیشرفته برای بهینه سازی عبارات استفاده کرد و اکنون می توان از مرتب سازی افزایشی برای بهینه سازی عملکردهای پنجره استفاده کرد.
  • رویه‌های ذخیره‌شده که به شما امکان می‌دهند تراکنش‌ها را در بلوک‌های کد مدیریت کنید، اکنون از تعریف داده‌های برگشتی با استفاده از پارامترهای «OUT» پشتیبانی می‌کنند.
  • تابع date_bin را با توجه به یک بازه زمانی مشخص به مقادیر مُهر زمانی گرد اضافه کرد. SELECT date_bin('15 minutes', TIMESTAMP '2020-02-11 15:44:17', TIMESTAMP '2001-01-01'); 2020-02-11 15:30:00
  • عبارات SEARCH و CYCLE تعریف شده در استاندارد SQL اضافه شد تا سازماندهی و شناسایی چرخه ها در عبارات جدول مشترک بازگشتی (CTE) آسان تر شود. با بازگشتی search_tree(id، پیوند، داده) AS (انتخاب t.id، t.link، t.data از درخت t UNION ALL SELECT t.id، t.link، t.data از درخت t، search_tree st WHERE t. id = st.link ) عمق جستجو ابتدا با شناسه SET ordercol SELECT * FROM search_tree ORDER BY ordercol;
  • در ابزار psql، تکمیل خودکار دستورات با زبانه ها بهبود یافته است، قابلیت نمایش آرگومان های تابع به دستور "\df" اضافه شده است و آمار نمایش داده شده به دستور "\dX" گسترش یافته است.
  • امکان اختصاص امتیازهای فقط خواندنی یا نوشتنی به کاربران وجود دارد. با استفاده از نقش‌های از پیش تعریف‌شده pg_read_all_data و pg_write_all_data، می‌توان امتیازات را روی جداول، نماها و طرح‌واره‌های جداگانه تنظیم کرد. اعطای pg_read_all_data به user1.
  • نصب های جدید به طور پیش فرض برای احراز هویت رمز عبور با استفاده از SCRAM-SHA-256 به جای md5 (پارامتر "password_encryption" هنگام تولید postgresql.conf اکنون روی 'scram-sha-256' تنظیم شده است).

منبع: opennet.ru

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