PostgreSQL 11: تقسيم التطور من Postgres 9.6 إلى Postgres 11

جمعة عظيمة للجميع! يتبقى وقت أقل قبل انطلاق الدورة "نظم إدارة قواعد البيانات العلائقية"، لذلك نشارك اليوم ترجمة مادة أخرى مفيدة حول هذا الموضوع.

في مرحلة التطوير PostgreSQL 11 تم القيام بعمل مثير للإعجاب لتحسين تقسيم الجدول. طاولات التقسيم هي ميزة كانت موجودة في PostgreSQL لفترة طويلة ، لكنها ، إذا جاز التعبير ، لم تكن موجودة حتى الإصدار 10 ، حيث أصبحت ميزة مفيدة للغاية. ذكرنا سابقًا أن وراثة الجدول هي تطبيقنا للتقسيم ، وهذا صحيح. بهذه الطريقة فقط أجبرتك على القيام بمعظم العمل يدويًا. على سبيل المثال ، إذا كنت تريد إدراج المجموعات في الأقسام أثناء عمليات الإدراج ، فسيتعين عليك إعداد مشغلات للقيام بذلك نيابة عنك. كان التقسيم بالوراثة بطيئًا للغاية ومعقدًا لتطوير ميزات إضافية فوقه.

في PostgreSQL 10 ، رأينا ولادة "التقسيم التصريحي" - وهي ميزة مصممة لحل العديد من المشكلات التي كانت غير قابلة للحل باستخدام الطريقة القديمة مع الوراثة. وقد أدى ذلك إلى أداة أكثر قوة تسمح لنا بتقسيم البيانات أفقيًا!

مقارنة الميزات

تتمتع PostgreSQL 11 بمجموعة رائعة من الميزات الجديدة التي تساعد في تحسين الأداء وتجعل الجداول المقسمة أكثر شفافية للتطبيقات.

PostgreSQL 11: تقسيم التطور من Postgres 9.6 إلى Postgres 11
PostgreSQL 11: تقسيم التطور من Postgres 9.6 إلى Postgres 11
PostgreSQL 11: تقسيم التطور من Postgres 9.6 إلى Postgres 11
1. استخدام الاستثناءات المحدودة
2. يضيف العقد فقط
3. فقط لجدول مقسم يشير إلى ملف
4. يجب أن تحتوي الفهارس على جميع الأعمدة الرئيسية للقسم
5. يجب أن تتطابق قيود القسم على كلا الجانبين

أداء

هنا لدينا أيضًا أخبار جيدة! تمت إضافة طريقة جديدة حذف الأقسام. يمكن لهذه الخوارزمية الجديدة تحديد الأقسام المناسبة من خلال النظر في حالة الاستعلام WHERE. قامت الخوارزمية السابقة ، بدورها ، باختبار كل قسم لتحديد ما إذا كان يمكن أن يفي بالشرط WHERE. وقد أدى ذلك إلى زيادة إضافية في وقت التخطيط مع زيادة عدد الأقسام.

في 9.6 ، مع تقسيم الوراثة ، يتم عادةً توجيه المجموعات إلى أقسام عن طريق كتابة دالة مشغل تحتوي على سلسلة من عبارات IF لإدراج مجموعة في القسم الصحيح. قد تكون هذه الوظائف بطيئة جدًا في التنفيذ. مع إضافة التقسيم التعريفي في الإصدار 10 ، يكون هذا أسرع بكثير.

باستخدام جدول مقسم يحتوي على 100 قسم ، يمكننا تقييم أداء تحميل 10 ملايين صف في جدول بعمود BIGINT واحد و 1 أعمدة INT.

PostgreSQL 11: تقسيم التطور من Postgres 9.6 إلى Postgres 11

أداء استعلام في هذا الجدول للبحث عن سجل مفهرس واحد وتنفيذ DML لمعالجة سجل واحد (باستخدام معالج واحد فقط):

PostgreSQL 11: تقسيم التطور من Postgres 9.6 إلى Postgres 11

هنا يمكننا أن نرى أن أداء كل عملية قد زاد بشكل ملحوظ منذ PG 9.6. الطلبات SELECT تبدو أفضل بكثير ، خاصة تلك التي تكون قادرة على استبعاد العديد من الأقسام أثناء تخطيط الاستعلام. هذا يعني أن المجدول يمكنه تخطي معظم العمل الذي كان ينبغي أن يقوم به من قبل. على سبيل المثال ، لم تعد تُبنى مسارات الأقسام غير الضرورية.

اختتام

بدأ تقسيم الجدول يصبح ميزة قوية جدًا في PostgreSQL. يسمح لك بإحضار البيانات عبر الإنترنت بسرعة ونقلها في وضع عدم الاتصال دون انتظار اكتمال عمليات DML الضخمة البطيئة.. وهذا يعني أيضًا أنه يمكن تخزين البيانات ذات الصلة معًا ، مما يعني أنه يمكن الوصول إلى البيانات المطلوبة بشكل أكثر كفاءة. لم تكن التحسينات التي تم إجراؤها في هذا الإصدار ممكنة بدون المطورين والمراجعين والمتعهدون الذين عملوا بلا كلل على كل هذه الميزات.
شكرا لهم جميعا! تبدو PostgreSQL 11 رائعة!

هذا مقال قصير ولكنه مثير للاهتمام. شارك بتعليقاتك ولا تنسى الاشتراك يوم مفتوح، والتي سيتم من خلالها وصف برنامج الدورة بالتفصيل.

المصدر: www.habr.com

إضافة تعليق