تصحيح: تحدث مشاكل في الأداء عند زيادة نشاط تأمين قاعدة البيانات في SQL Server

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

اضغط هنا لرابط المقالة باللغة الانجليزية2926217
ملاحظة
بشكل افتراضي، يتضمن Service Pack 1 لعام 2014 خادم SQL و 3 حزمة خدمة ل SQL Server 2012 هذا الإصلاح وليس لديك لإضافة أي إشارات التتبع لتمكين الإصلاح. لتمكين هذا الإصلاح بعد تثبيت أحد التحديثات التراكمية في المقطع الحل، عليك بدء تشغيل Microsoft SQL Server بإضافة إشارة تتبع 1236 إلى معلمات بدء التشغيل.
الأعراض
افترض أن تقوم بتشغيل مثيل عام 2014 Microsoft SQL Server أو SQL Server 2012، SQL Server 2008 أو SQL Server 2008 R2 على جهاز كمبيوتر يحتوي على العديد من معالجات. عند عدد التأمينات (نوع المورد = قاعدة البيانات) لقاعدة بيانات معينة تتجاوز عتبة معينة، تواجه مشاكل الأداء التالية:
  • تقع قيم عالية لعدد spinlock LOCK_HASH .

    ملاحظة: راجع قسم "مزيد من المعلومات" للحصول على معلومات حول كيفية مراقبة هذا spinlock.
  • الاستعلامات أو عمليات تأمين قاعدة البيانات تتطلب وقتاً طويلاً لتكتمل. على سبيل المثال، قد تلاحظ تأخر الأداء التالية:
    • تسجيلات دخول SQL Server
    • استعلامات ملقم مرتبط
    • sp_reset_connection
    • حركات
ملاحظة: لتحديد موقع قائمة التأمين (نوع المورد = قاعدة البيانات) على قاعدة بيانات معين، راجع قسم "مزيد من المعلومات". تختلف القيمة الحدية بالبيئة.
الحل

معلومات التحديث التراكمي

تم تصحيح هذه المشكلة أولاً في التحديث التراكمي التالية من SQL Server.

التحديث التراكمي 13 ل SQL Server 2008 R2 SP2

التحديث التراكمي 17 ل SQL Server 2008 SP3

التحديث التراكمي 1 ل SQL Server 2014

التحديث التراكمي 9 ل SQL Server 2012 SP1

حول التحديثات التراكمية ل SQL Server

يحتوي التحديث التراكمي كل جديدة ل SQL Server على كافة الإصلاحات العاجلة وكافة إصلاحات الأمان التي تم تضمينها مع التحديث التراكمي السابق. تحقق من أحدث التحديثات التراكمية ل SQL Server:

معلومات الإصلاح العاجل

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

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

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

تصريح
أقرت Microsoft أن هذه مشكلة في منتجات Microsoft المسردة في قسم "ينطبق على".
معلومات أخرى
عند تطبيق بإجراء اتصال بملقم SQL، يؤسس أولاً سياق قاعدة بيانات. بشكل افتراضي، حاول الاتصال بالحصول على تأمين قاعدة البيانات في وضع SH. سيتم إصدار تأمين قاعدة SH عندما تم إيقاف الاتصال أو تغيير سياق قاعدة البيانات أثناء مدة الاتصال. إذا كان لديك العديد من الاتصالات النشطة التي تستخدم نفس سياق قاعدة البيانات، يمكن أن يكون التأمين العديد من نوع مورد قاعدة البيانات لقاعدة البيانات المحددة.

على كمبيوتر يحتوي على وحدات المعالجة المركزية 16 أو أكثر، استخدم جدول الكائنات نظام تأمين مقسم. ومع ذلك، لم يتم تقسيم تأمين قاعدة البيانات. ولذلك، تأمين أكبر العدد من قاعدة البيانات، زاد الوقت المستغرق للحصول على تأمين على قاعدة البيانات SQL Server. معظم التطبيقات لا تواجه أي مشاكل ناتجة عن هذا التصميم. ولكن مجرد العدد يتجاوز عتبة معينة، العمل الإضافي والوقت المطلوب للحصول على التأمين. على الرغم من أن التكلفة الدقيقة ثانية فقط لكل تأمين إضافية، بسرعة زيادة الوقت الإجمالي لمستودعات التجزئة تأمين محمية باستخدام spinlock. هذا يؤدي دورات CPU إضافية وينتظر عامل إضافي للحصول على التأمين.

يقدم هذا الإصلاح العاجل تقسيم تأمين قاعدة البيانات عند تمكين تتبع العلامة T1236 عند بدء التشغيل. تقسيم تأمين قاعدة بيانات يحتفظ عمق قفل قائمة مميزة في كل أقسام محلية. هذا يحسن إلى حد كبير مسار وصول المستخدم للحصول على تأمين قاعدة البيانات .

لمراقبة LOCK_HASH spinlock، يمكنك استخدام الاستعلام التالي.
SET NOCOUNT ONCREATE TABLE #spinlock_stats([CaptureTime] datetime,[name] nvarchar(512),[collisions] bigint,[spins] bigint,[spins_per_collision] real,[sleep_time] bigint,[backoffs] int)DECLARE @counter int = 1WHILE @counter < 100      BEGIN            INSERT INTO #spinlock_stats SELECT GETDATE() as "CaptureTime" , * FROM sys.dm_os_spinlock_stats WHERE [name] = 'LOCK_HASH'            WAITFOR DELAY '00:00:05'            SET @counter +=1      ENDSELECT * FROM #spinlock_stats ORDER BY [CaptureTime]DROP TABLE #spinlock_stats
لمزيد من المعلومات حول تشخيص وحل التنازع spinlock في SQL Server، انتقل إلى المستند التالي:

ملاحظة: على الرغم من أن هذه الوثيقة مطبوعة ل SQL Server 2008 R2، المعلومات لا تزال قابلة للتطبيق على SQL Server 2012.
مراجع
لمزيد من المعلومات حول تتبع إشارات في SQL Server 2012، انتقل إلى موقع TechNet التالي على الويب:


لمزيد من المعلومات حول كيفية البحث عن عدد عمليات تأمين قاعدة البيانات المستخدم في قاعدة البيانات، استخدم الاستعلام التالي لحساب هذه القيمة:
select  Resource_database_id, resource_type, request_mode, request_status,  count (*) 'LockCount' from sys.dm_tran_locks group by  Resource_database_id, resource_type, request_mode, request_status


تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 2926217 - آخر مراجعة: 12/03/2015 05:57:00 - المراجعة: 9.0

Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2012 Express, Microsoft SQL Server 2012 Web, Microsoft SQL Server 2012 Service Pack 1, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2008 Service Pack 3, Microsoft SQL Server 2008 R2 Service Pack 2

  • kbqfe kbfix kbsurveynew kbexpertiseadvanced kbautohotfix kbhotfixserver kbmt KB2926217 KbMtar
تعليقات