سؤال

تم التعديل :لماذا يتم حظر تقارير الجلسات ولكن في انتظارها PAGELATCH_*, ، و لا LCK_M_ أنواع الانتظار ذات الصلة؟

لقد افترضت سابقًا أن خادم SQL سيُبلغ فقط عن جلسات الحظر في عمود blocking_session_Id.إذا كانت الجلسات المحظورة تنتظر القفل المنطقي وليس أي شيء آخر مثل PAGELATCH_*.

enter image description here

هل كانت مفيدة؟

المحلول

لقد افترضت سابقًا أن SQL Server سيبلغ فقط عن جلسة حظر في العمود blocking_session_id، إذا كانت الجلسات المحظورة تنتظر قفلًا منطقيًا وليس أي شيء آخر مثل PAGELATCH_*.

أنت تستخدم آدم Machanic sp_WhoIsActive الإجراء، وليس منشأة SQL Server المضمنة.يُبلغ إجراء آدم عن جميع الأسباب "المثيرة للاهتمام" للحظر، وليس فقط حظر القفل.المعلومات الأساسية تأتي من مصادر مختلفة، بما في ذلك sysprocesses, sys.dm_exec_requests, ، و sys.dm_os_waiting_tasks.

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

في مثالك، PAGELATCH_EX توجد مزالج الصفحات الحصرية على صفحات البيانات أو الفهرس العادية، وليست صفحات PFS أو GAM أو SGAM أو DCM أو BCM، كما هو موضح بواسطة (*) في نهاية wait_info.

يمكنك العثور على الوثائق (إدخالات المدونة) الخاصة بـ sp_WhoIsActive هنا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى dba.stackexchange
scroll top