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

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



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

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

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

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




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

إنتاجية

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

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

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



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



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

استنتاج

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

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

Source: https://habr.com/ru/post/ar452280/


All Articles