أنت غير متصل حاليًا، وفي انتظار الإنترنت الخاص بك ليقوم بإعادة الاتصال

الاستعلامات وقتاً أطول انتهاء تشغيل عندما يزداد حجم ذاكرة التخزين المؤقت TokenAndPermUserStore في SQL Server 2005

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

اضغط هنا لرابط المقالة باللغة الانجليزية927396
الخطأ رقم: 429501 (SQLBUDT)
الأعراض
في Microsoft SQL Server 2005 قد تواجه الأعراض التالية:
  • الاستعلامات التي تعمل بشكل أسرع بشكل أمثل وقتاً أطول لإنهاء قيد التشغيل.
  • استخدام وحدة المعالجة المركزية لعملية SQL Server أكثر من المعتاد.
  • عند حدوث انخفاض في الأداء عند تشغيل استعلام ad hoc عرض الاستعلام من طريقة عرض إدارة حيوي sys.dm_exec_requests أو sys.dm_os_waiting_tasks. ومع ذلك، لا يظهر الاستعلام انتظار أي مورد.
  • يزداد حجم المخزن المؤقت TokenAndPermUserStore بمعدل ثابت.
  • حجم المخزن المؤقت TokenAndPermUserStore مرتباً عدة hundred ميغابايت (MB).
  • في بعض الحالات، توفر تنفيذ الأمر FREEPROCCACHE DBCC تصريف المؤقتة.
لمراقبة حجم ذاكرة التخزين المؤقت TokenAndPermUserStore يمكنك استخدام استعلام مشابهًا لما يلي:
SELECT SUM(single_pages_kb + multi_pages_kb) AS    "CurrentSizeOfTokenCache(kb)"    FROM sys.dm_os_memory_clerks    WHERE name = 'TokenAndPermUserStore'
السبب
يحتفظ المخزن المؤقت TokenAndPermUserStore الأمان folllowing أنواع الرمز المميز:
  • LoginToken
  • TokenPerm
  • UserToken
  • SecContextToken
  • TokenAccessResult.
فئات مختلفة من إدخالات TokenAccessResult موجودة أيضاً. تحدث هذه المشكلة بسبب وجود العديد من الإدخالات TokenAccessResult التي لديها فئة من 65535.

ضمن مثيل SQL Server الذي يحتوي على نسبة عالية من تنفيذ الاستعلام الحيوي عشوائي لاحظ الكثير من الإدخالات TokenAccessResult التي لديها فئة من 65535 في طريقة العرض sys.dm_os_memory_cache_entries. تمثل TokenAccessResult الإدخالات التي ليس لها فئة من 65535 إدخالات خاصة. يتم استخدام إدخالات ذاكرة التخزين المؤقت هذه التدقيقات إذن التراكمي للاستعلامات. على سبيل المثال، قد تقوم بتشغيل الاستعلام التالي:
select * from t1 join t2 join t3
في هذه الحالة، يقوم SQL Server يحسب اختيار إذن تراكمي لهذا الاستعلام. يحدد هذا الاختيار ما إذا كان مستخدم حدد على t1, t2, t3 أم لا. هذه النتائج الاختيار إذن التراكمي مضمن إلى إدخال TokenAccessResult ثم إدراجه في المخزن المؤقت TokenAndPermUserStore معرف أحد 65535. في حال لنفس المستخدم reuses أو تنفيذ هذا الاستعلام عدة مرات SQL Server reuses إدخال ذاكرة التخزين المؤقت TokenAccessResult مرة واحدة.

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

معلومات حزمة الخدمة

لحل هذه المشكلة، يجب الحصول على أحدث حزمة خدمة لـ SQL Server 2005. لمزيد من المعلومات، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف لـ Microsoft:
913089كيفية الحصول على أحدث حزمة خدمة لـ SQL Server 2005
لحل هذه المشكلة على تغيير سلوك التخزين المؤقت الرموز المميزة إذن SQL Server 2005 المزود بحزمة الخدمة SP2. بشكل افتراضي، إدخال ذاكرة التخزين المؤقت الأمان TokenAccessResult لاستعلامات ad hoc مؤقتاً فقط عند تنفيذ استعلام ad hoc خاصة مرة أخرى.
الحل البديل
للتغلب على هذه المشكلة، استخدم واحد أو أكثر من الطرق التالية:
  • بشكل صريح parameterize الاستعلامات المستقلة.

    الملاحظات
    • تسمح هذه الطريقة في فاعلية إعادة استخدام استعلامات ad hoc والخطط الخاصة بهم.
    • عند استخدام هذا الأسلوب ليس لديك لإنشاء إدخال TokenAccessResult في كل مرة يتم فيها تشغيل استعلام ad hoc مع معلمات مختلفة.
    • باستخدام هذا الأسلوب، حجم TokenAndPermUserStore يبقى ذاكرة التخزين المؤقت ضمن حدود معقولة.
  • التفاف استعلامات ad hoc ضمن الإجراءات المخزنة ثم استخدم الإجراءات المخزنة بدلاً من تنفيذ استعلامات المؤقتة مباشرة.

    الملاحظات
    • تم تخزينها مؤقتاً خطط التنفيذ العبارات في الإجراء المخزن.
    • يتم إدخال TokenAccessResult كل جملة مع إدخال خطة التنفيذ.
    • طالما أن يتم تخزين خطة تنفيذ هذا الإجراء يبقى في ذاكرة التخزين المؤقت, كل تنفيذ الإجراء المخزن reuses إدخالات TokenAccessResult بشكل فعال. ولذلك، لا يلزم إنشاء TokenAccessResult الجديدة إدخالات.
  • تمكين خيار FORCE_PARAMETERIZATION قاعدة البيانات.

    الملاحظات
    • تسمح هذه الطريقة في فاعلية إعادة استخدام استعلامات ad hoc والخطط الخاصة بهم.
    • عند استخدام هذا الأسلوب ليس لديك لإنشاء إدخال TokenAccessResult في كل مرة يتم فيها تشغيل استعلام ad hoc مع معلمات مختلفة.
    • باستخدام هذا الأسلوب، حجم TokenAndPermUserStore يبقى ذاكرة التخزين المؤقت ضمن حدود معقولة.
  • إضافة تسجيل الدخول الذي يقوم بتنفيذ تختلف استعلامات ad hoc كعضو من مجموعة خوادم مسؤول النظام.

    الملاحظات
    • يتم فقط إنشاء إدخالات TokenAccessResult استعلام مؤقتة عند تنفيذ الاستعلام قبل تسجيل دخول ليس عضو في مجموعة خوادم مسؤول النظام.
    • لأنه لا يتم إنشاء إدخالات TokenAccessResult يحتفظ هذا السلوك حجم ذاكرة التخزين المؤقت TokenAndPermUserStore إلى حجم يمكن إدارتها.
  • مسح إدخالات من ذاكرة التخزين المؤقت TokenAndPermUserStore.

    الملاحظات
    • للقيام بذلك، قم بتشغيل الأمر التالي:
      FREESYSTEMCACHE DBCC ('TokenAndPermUserStore')
    • وبشكل مثالي، محاولة مشاهدة حد حجم ذاكرة التخزين المؤقت TokenAndPermUserStore عند بدء تشغيل مشاكل تظهر.
    • يمكنك إنشاء مهمة مجدولة في SQL Server عامل بتنفيذ الإجراءات التالية:
      • تحقق من حجم حجم ذاكرة التخزين المؤقت TokenAndPermUserStore. للقيام بذلك، قم بتشغيل الأمر التالي:
        SELECT SUM(single_pages_kb + multi_pages_kb) AS    "CurrentSizeOfTokenCache(kb)"    FROM sys.dm_os_memory_clerks    WHERE name = 'TokenAndPermUserStore'
      • إذا كانت أكبر من عتبة التي يجب ملاحظتها حجم ذاكرة التخزين المؤقت, قم بتشغيل الأمر التالي:
        DBCC FREESYSTEMCACHE ('TokenAndPermUserStore')
مراجع
لمزيد من المعلومات، انقر فوق أرقام المقالات التالية لعرضها في "قاعدة المعارف لـ Microsoft:
933564FIX: يحدث زيادة تدريجية في استهلاك الذاكرة لمخزن ذاكرة التخزين المؤقت USERSTORE_TOKENPERM في SQL Server 2005
959823كيفية تخصيص الحصة النسبية لوحدة تخزين ذاكرة التخزين المؤقت TokenAndPermUserStore في SQL Server 2005 المزود بحزمة الخدمة Service Pack 3

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

خصائص

رقم الموضوع: 927396 - آخر مراجعة: 07/28/2009 13:38:47 - المراجعة: 4.0

Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems, Microsoft SQL Server 2005 Enterprise X64 Edition, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Standard X64 Edition

  • kbmt kbtshoot kbinfo kbsql2005tsql kbprb KB927396 KbMtar
تعليقات
ml>type="text/JavaScript" async=""> var varAutoFirePV = 1; var varClickTracking = 1; var varCustomerTracking = 1; var Route = "76500"; var Ctrl = ""; document.write(" p;t=">sListForLargeScreens track by $index" class="col-sm-6 col-xs-24 ng-scope"> España - Español
Paraguay - Español
Venezuela - Español
/c1.microsoft.com/c.gif?DI=4050&did=1&t=">p;t="> 1; var varCustomerTracking = 1; var Route = "76500"; var Ctrl = ""; document.write(" mp;t=">