it-swarm.asia

كيف أقرأ تكلفة الاستعلام ، وهل هي دائمًا نسبة مئوية؟

أنا أدرس حاليًا لـ SQL 70-433 (اختبار شهادة Microsoft) ، وأصبح مرتبكًا جدًا بشأن مقياس أداء "تكلفة الاستعلام".

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

ولكن بعد ذلك فكرت ، حسنًا ، ربما ما يُتوقع منك القيام به هو وضع استعلامين بديلين جنبًا إلى جنب ، وتشغيلهما كـ "دفعة" ، ثم أيهما بتكلفة أقل من 50٪ هو الفائز.

لكن مناقشة تكلفة الاستعلام في الفصل 6 ، لا يبدو أن الدرس الأول من مجموعة أدوات تدريب Microsoft SQL 70-433 لا علاقة له بذلك.

فيما يلي مثال: يعرضون استعلامًا يحتوي على استعلامين فرعيين مترابطين ، ثم تحسينهما عن طريق استبدال الاستعلامات الفرعية بتطبيق خارجي. النتيجة: "تكلفة هذا الاستعلام 76 تقريبًا ، بينما كانت تكلفة الاستعلام الأول ضعف تلك ، حوالي 151." ثم يقومون بتحسين الاستعلام أكثر ، ويقللون التكلفة من 76 إلى 3.6. وهي لا تشير إلى أن هذه الأرقام هي نسب مئوية ، في حين أنها تعني ضمناً أنها أرقام مطلقة تتعلق بالاستعلام ككائن مستقل ، دون الرجوع إلى أي استعلامات أخرى. وعلى أي حال ، كيف يمكن أن تكون تكلفة الاستعلام الأول 151٪؟

في وقت لاحق من الفصل ، يعرضون لقطة شاشة لخطة التنفيذ التي تتكون من ثلاثة أجزاء. الأول يقول "التكلفة: 0٪" ، والثاني يقول "التكلفة: 1٪" وآخر يقول "التكلفة: 99٪" لكن النص (للكتاب نفسه) أسفل لقطة الشاشة "تكلفة هذا الاستعلام 0.56" . أعتقد أنها تعني نوعًا آخر من التكلفة ، لكن لا يمكنني العثور على مرجع لها في مكان آخر.

يمكن للشخص أن يساعد؟ أنا في حيرة من أمري.

34
Born Again Geek Girl

يتم تسجيل تكلفة الاستعلام في خطط التنفيذ على أنها "التكلفة المقدرة للشجرة الفرعية". هذا الرقم مطلق مثل 1.5. ذكر Conor Cunningham في عرض تقديمي لـ SQLBits أنه يشير في الأصل إلى عدد الثواني التي يستغرقها التنفيذ على جهاز موظف Microsoft معين ( "Nick's Machine" ) في SQL Server 7 أيام

enter image description here

ولكن يجب الآن تفسيره على أنه مقياس بدون تكلفة للتكلفة الإجمالية.

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

لتحديد التكلفة المقدرة لاستعلام كامل في SSMS ، حدد مكرر الجذر (على سبيل المثال SELECT iterator) على يمين الخطة الرسومية وانظر إلى هذا المقياس في نافذة خصائص SSMS.

عند تشغيل استعلامات متعددة (سواء في نفس الدفعة أم لا) يتم حساب النسبة المئوية عن طريق إضافة كل هذه القيم وحساب النسبة المئوية كما تتوقع.

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

43
Martin Smith