Postgres شرح أمر تحليل

Postgres Shrh Amr Thlyl



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

بصفتنا مسؤولي قاعدة بيانات ، نحتاج إلى أن نكون مهووسين بالأدوات والأساليب لتحسين أداء قاعدة البيانات.

في PostgreSQL ، لدينا حق الوصول إلى الأمر EXPLAIN ANALYZE الذي يسمح لنا بتحليل خطة التنفيذ وأداء استعلام قاعدة بيانات معين. يقوم الأمر بإرجاع معلومات مفصلة حول كيفية معالجة محرك قاعدة البيانات للاستعلام. يتضمن ذلك تسلسل العمليات المنجزة وتكاليف الاستعلام المقدرة وتوقيت التنفيذ والمزيد.







يمكننا بعد ذلك استخدام هذه المعلومات لتحديد استفسارات قاعدة البيانات وكذلك تحديد وإصلاح الاختناقات المحتملة في الأداء.



يناقش هذا البرنامج التعليمي كيفية استخدام الأمر EXPLAIN ANALYZE في PostgreSQL لعرض أداء الاستعلام وتحسينه.



PostgreSQL شرح التحليل

الأمر واضح ومباشر. أولاً ، نحتاج إلى إضافة الأمر EXPLAIN ANALYZE مسبقًا في بداية الاستعلام الذي نرغب في تحليله.





صيغة الأمر كما يلي:

اشرح تحليل

بمجرد تنفيذ الأمر ، تُرجع PostgreSQL مخرجات تفصيلية حول الاستعلام المقدم.



فهم إخراج استعلام شرح تحليل

كما ذكرنا ، بمجرد تشغيل الأمر EXPLAIN ANALYZE ، تُنشئ PostgreSQL تقريرًا مفصلاً عن خطة الاستعلام وإحصائيات التنفيذ.

يتكون الإخراج من مجموعة من الأعمدة التي تحتوي على معلومات مفيدة. تظهر الأعمدة الناتجة مع المعنى الخاص بها:

خطة الاستعلام - يعرض هذا العمود خطة تنفيذ الاستعلام المحدد. تشير خطة التنفيذ إلى سلسلة من العمليات التي ينفذها محرك قاعدة البيانات لإكمال الاستعلام بنجاح.

يخطط - العمود الثاني هو عمود التخطيط. يحتوي هذا على تمثيل نصي لكل عملية أو خطوة في خطة التنفيذ. مرة أخرى ، يتم وضع مسافة بادئة لكل عملية للإشارة إلى التسلسل الهرمي للعمليات.

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

الصفوف الفعلية - يعرض هذا العمود العدد الدقيق للصفوف التي تتم معالجتها في كل خطوة في تنفيذ الاستعلام.

الوقت الفعلي - يوضح هذا العمود الوقت الفعلي الذي تستغرقه كل عملية والذي يتضمن وقت تنفيذ العملية والوقت المستغرق في الموارد.

وقت التخطيط - يعرض هذا العمود الوقت الذي يستغرقه مخطط الاستعلام لإنشاء خطة تنفيذ. يتضمن هذا الوقت الإجمالي لتحسين الاستعلام وإنشاء الخطة.

وقت التنفيذ - يعرض هذا العمود الوقت الإجمالي لتنفيذ الاستعلام. يتضمن هذا أيضًا الوقت المستغرق في التخطيط ووقت تنفيذ الاستعلام.

PostgreSQL اشرح مثال التحليل

دعونا نلقي نظرة على بعض الأمثلة الأساسية لاستخدام بيان تحليل التحليل.

مثال 1: حدد عبارة
دعونا نستخدم تعليمة EXPLAIN ANALYZE لإظهار تنفيذ جملة select البسيطة في PostgreSQL.

شرح التحليل حدد * من wp_users حيث id> 3 ؛

بمجرد تشغيل البيان السابق ، يجب أن نحصل على مخرجات على النحو التالي:

خطة الاستعلام
-------------------------------------------------- -----------------
مسح تسلسلي على wp_users (التكلفة = 0.00..10.38 صفوف = 10 عرض = 2256) (الوقت الفعلي = 0.009..0.010 صفوف = 7 حلقات = 1)
عامل التصفية: (معرف> 3)
الصفوف التي تمت إزالتها بواسطة عامل التصفية: 3
وقت التخطيط: 0.995 مللي ثانية
وقت التنفيذ: 0.021 مللي ثانية
(5 صفوف)

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

ثم نرى 'الصفوف التي تمت إزالتها بواسطة عامل التصفية' والتي تعرض عدد الصفوف التي تم حذفها بواسطة شرط الفلتر.

أخيرًا ، يُظهر وقت التنفيذ إجمالي وقت تنفيذ الاستعلام. في هذه الحالة ، يستغرق الاستعلام 0.021 مللي ثانية.

مثال 2: تحليل صلة
لنأخذ استعلامًا أكثر تعقيدًا يتضمن صلة SQL. لهذا ، نستخدم قاعدة بيانات Pagila. يمكنك تنزيل وتثبيت نموذج قاعدة البيانات على جهازك لغرض العرض التوضيحي.

يمكننا تشغيل صلة بسيطة كما هو موضح في ما يلي:

شرح تحليل SELECT f.title، c.name
من فيلم f
الانضمام إلى film_category fc ON f.film_id = fc.film_id
الانضمام إلى الفئة c ON fc.category_id = c.category_id؛

بمجرد تشغيل الاستعلام المحدد ، يجب أن نرى الناتج كما يلي:

دعنا نستكشف خطة الاستعلام التالية:

  1. Nested Loop - يشير هذا إلى أن الصلة تستخدم استراتيجية ربط حلقة متداخلة.
  2. Hash Join - تنضم هذه العملية إلى film_category وجداول الأفلام باستخدام خوارزمية Hash Join. تبلغ تكلفة هذه العملية 77.50 صفًا وتقدر بنحو 1000 صف. ومع ذلك ، فإن الوقت الفعلي الذي تستغرقه هذه العملية هو 0.254 إلى 0.439 مللي ثانية ، وتسترد 1000 صف.
  3. Hash Cond - يشير هذا إلى أن شرط الانضمام يستخدم صلة تجزئة لمطابقة أعمدة film_id وأعمدة film_category في جداول الأفلام.
  4. Seq Scan on film_category - تقوم هذه العملية بإجراء مسح تسلسلي على جدول film_category بتكلفة 16.00 و 1000 صف تقديرية. الوقت الفعلي الذي تستغرقه هذه العملية هو 0.008 إلى 0.056 مللي ثانية ، وتسترد 1000 صف.
  5. Seq Scan on film - يقوم الاستعلام بإجراء مسح تسلسلي على جدول الأفلام مع التكاليف والصفوف المقدرة والفعلية الناتجة في هذه العملية.
  6. Memoize - تقوم هذه العملية بتخزين نتائج الصلة بين جداول film_category وجداول الفيلم مؤقتًا للاستخدام اللاحق.
  7. مفتاح التخزين المؤقت - يشير هذا إلى أن مفتاح التخزين المؤقت المستخدم في الحفظ يستند إلى عمود category_id من فئة_الفيلم.
  8. وضع ذاكرة التخزين المؤقت - يشير هذا إلى أن الاستعلام يستخدم وضع التخزين المؤقت المنطقي.
  9. الزيارات ، والمخطئ ، والإخلاء ، والفيضانات - توفر الأسطر الثلاثة إحصاءات حول ذاكرة التخزين المؤقت ، وعدد مرات الوصول ، والإخفاقات ، وعمليات الإخلاء ، والفيضانات أثناء التنفيذ. تتضمن هذه الكتلة أيضًا استخدام الذاكرة أثناء تنفيذ الاستعلام.
  10. فحص الفهرس باستخدام category_pkey - يُظهر هذا العملية التي تقوم بإجراء فحص فهرس في جدول الفئات باستخدام فهرس المفتاح الأساسي.
  11. مؤشر الفهرس - يوضح هذا أن فحص الفهرس يعتمد على الشرط الذي يتطابق مع عمود category_id في جدول الفئات.
  12. وقت التخطيط - يعرض هذا السطر الوقت المستغرق لتخطيط الاستعلام وهو 3.005 مللي ثانية.
  13. وقت التنفيذ - أخيرًا ، يعرض هذا السطر إجمالي وقت تنفيذ الاستعلام وهو 0.745 مللي ثانية.

ها أنت ذا! معلومات مفصلة حول تنفيذ صلة بسيطة في PostgreSQL.

خاتمة

لقد اكتشفت قوة واستخدام عبارة EXPLAIN ANALYZE في PostgreSQL. تعد عبارة EXPLAIN ANALYZE أداة قوية لتحليل الاستعلام وتحسينه. استخدم هذه الأداة لإنشاء استعلامات فعالة وأقل كثافة في استخدام الموارد.