إصدار PostgreSQL 14

بعد عام من التطوير، تم نشر فرع مستقر جديد من PostgreSQL 14 DBMS. سيتم إصدار تحديثات الفرع الجديد على مدار خمس سنوات حتى نوفمبر 2026.

الابتكارات الرئيسية:

  • تمت إضافة دعم للوصول إلى بيانات JSON باستخدام تعبيرات تشبه المصفوفة: SELECT ('{ "postgres": { "release": 14 }}'::jsonb)['postgres']['release']; SELECT * من الاختبار حيث التفاصيل['attributes']['size'] = '"medium"';

    يتم تنفيذ بناء جملة مماثل لبيانات المفتاح/القيمة التي يوفرها نوع hstore. تم تنفيذ بناء الجملة هذا في البداية باستخدام إطار عمل عالمي، والذي يمكن استخدامه في المستقبل لأنواع أخرى. مثال لنوع hstore: INSERT INTO mytable VALUES ('a=>b, c=>d'); حدد h['a'] من mytable؛ تحديث مجموعة الجدول h['c'] = 'new';

  • تم توسيع مجموعة الأنواع الخاصة بتعريف النطاقات بأنواع جديدة "متعددة النطاق"، والتي تسمح لك بتحديد قوائم مرتبة لنطاقات القيم غير المتداخلة. بالإضافة إلى كل نوع نطاق موجود، يُقترح نوع متعدد النطاق خاص به، على سبيل المثال، النوع "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 متعددة. في تنفيذ النسخ المتماثل المنطقي، أصبح من الممكن الآن إرسال المعاملات في وضع الدفق التي هي قيد التنفيذ، والتي يمكن أن تحسن بشكل كبير أداء النسخ المتماثل للمعاملات الكبيرة. بالإضافة إلى ذلك، تم تحسين فك التشفير المنطقي للبيانات الواردة أثناء النسخ المنطقي.
  • أضافت آلية ربط الجداول الخارجية لمجمع البيانات الخارجية (postgres_fdw) دعمًا لمعالجة الاستعلام المتوازي، والذي لا ينطبق حاليًا إلا عند الاتصال بخوادم PostgreSQL الأخرى. يضيف postgres_fdw أيضًا دعمًا لإضافة البيانات إلى الجداول الخارجية في الوضع الدفعي والقدرة على استيراد الجداول المقسمة عن طريق تحديد توجيه "IMPORT FOREIGN SCHEMA".
  • تم إجراء تحسينات على تنفيذ عملية VACUUM (جمع البيانات المهملة وتعبئة مساحة تخزين القرص). تمت إضافة وضع تنظيف الطوارئ الذي يتخطى عمليات التنظيف غير الضرورية إذا تم إنشاء شروط التفاف معرف المعاملة. تم تقليل الحمل الزائد عند معالجة الفهارس بتنسيق B-Tree. تم تسريع تنفيذ عملية "ANALYZE"، التي تجمع إحصائيات حول تشغيل قاعدة البيانات، بشكل كبير.
  • تمت إضافة إمكانية ضبط طريقة الضغط المستخدمة في نظام TOAST، المسؤولة عن تخزين البيانات الكبيرة، مثل الكتل النصية أو المعلومات الهندسية. بالإضافة إلى طريقة الضغط pglz، يمكن لـ TOAST الآن استخدام خوارزمية LZ4.
  • تم توسيع أدوات مراقبة تشغيل نظام إدارة قواعد البيانات. تمت إضافة طرق عرض لتتبع تقدم أوامر 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"، والتنفيذ المتوازي للاستعلامات في " تحديث الرؤية المادية”. لتحسين أداء عمليات الدمج الدورية المتداخلة (الانضمام)، تم تنفيذ دعم التخزين المؤقت الإضافي.
  • يمكن الآن استخدام الإحصائيات المتقدمة لتحسين التعبيرات، ويمكن الآن استخدام الفرز التزايدي لتحسين وظائف النافذة.
  • الإجراءات المخزنة التي تسمح لك بإدارة المعاملات في مجموعات من التعليمات البرمجية تدعم الآن تحديد بيانات الإرجاع باستخدام معلمات "OUT".
  • تمت إضافة وظيفة date_bin لتقريب قيم الطابع الزمني وفقًا لفاصل زمني محدد. SELECT date_bin('15 دقيقة', TIMESTAMP '2020-02-11 15:44:17', TIMESTAMP '2001-01-01'); 2020-02-11 15:30:00
  • تمت إضافة تعبيرات SEARCH وCYCLE المحددة في معيار SQL لتسهيل تنظيم وتحديد الدورات في تعبيرات الجدول الشائعة المتكررة (CTE). مع شجرة البحث المتكررة (المعرف، الارتباط، البيانات) AS ( SELECT t.id، t.link، t.data FROM Tree t UNION ALL SELECT t.id، t.link، t.data FROM Tree 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 للمستخدم1؛
  • عمليات التثبيت الجديدة الافتراضية هي مصادقة كلمة المرور باستخدام SCRAM-SHA-256 بدلاً من md5 (يتم الآن تعيين المعلمة "password_encryption" عند إنشاء postgresql.conf على "scram-sha-256").

المصدر: opennet.ru

إضافة تعليق