סימפטומים
כאשר מתרחשות יותר מדי הוספות בו-זמנית באותו דלי hash, או כאשר מטמון תוכנית SQL Server אד הוק מגיע למגבלת הכניסה שלו של 160,036, מתרחשת מחלוקת חמורה על SOS_CACHESTORE spinlock. במצב זה, מתרחש שימוש גבוה ב- CPU ב- Microsoft SQL Server.
גורם
הבעיה מתרחשת כאשר מטמון התוכנית של SQL Server מגיע למגבלת הכניסה שלו, ויש לפנות תוכניות בעלות נמוכה כדי להוסיף תוכניות חדשות. פעולה זו גורמת למחלוקת כבדה על ה- SOS_CACHESTORE spinlock המספק סינכרון עבור מיכלי טבלת ה- hash של מטמון תוכנית SQL Server.
פתרון
מידע עדכון מצטבר
הבעיה תוקנה לראשונה בעדכון המצטבר הבא של SQL Server.
- עדכון מצטבר 1 עבור SQL Server 2014 SP1
- עדכון מצטבר 5 עבור SQL Server 2012 SP2
- עדכון מצטבר 6 עבור SQL Server 2014
- עדכון מצטבר 14 עבור SQL Server 2012 SP1
אודות עדכונים מצטברים עבור SQL Server
כל עדכון מצטבר חדש עבור SQL SQL Server מכיל את כל התיקונים החמים ואת כל תיקוני האבטחה שנכללו בעדכון המצטבר הקודם. עיין בעדכונים המצטברים האחרונים עבור SQL Server:
- העדכון המצטבר האחרון עבור SQL Server 2014 SP1
- העדכון המצטבר האחרון עבור SQL Server 2012 SP2
- העדכון המצטבר האחרון עבור SQL Server 2014
- העדכון המצטבר האחרון עבור SQL Server 2012 SP1
למטמון התוכניות יש שתי מגבלות: הגודל הכולל והמספר הכולל של כל התוכניות. מגבלות הגודל וספירת הכניסות מוסברות בסקירה הטכנית הבאה:
מספר הערכים המרבי שמטמון תוכנית יכול לאחסן הוא פי ארבע מספירת המיכל. באפשרותך לוודא מידע זה על-ידי הפעלת השאילתות הבאות:
select name, type, buckets_count
from sys.dm_os_memory_cache_hash_tables
where name IN ( 'SQL Plans' , 'Object Plans' , 'Bound Trees' )
select name, type, pages_kb, entries_count
from sys.dm_os_memory_cache_counters
where name IN ( 'SQL Plans' , 'Object Plans' , 'Bound Trees' )
לדוגמה, במערכות של 64 סיביות, מספר המיכלים עבור מטמון תוכנית SQL Server הוא 40,009. לכן, המספר המרבי של ערכים שיכולים להיכנס למטמון של תוכנית SQL Server הוא 160,036.
אם יש לך עומס עבודה המשתמש בשאילתות אד הוק שונות, מגבלה זו עלולה להפוך לצוואר בקבוק. השינוי שמתבצע על-ידי תיקון חם זה מטפל במצב זה. לאחר התקנת תיקון חם זה והפיכת השינוי לזמין באמצעות דגל מעקב האתחול "-T 174", ספירת המיכל גדלה ל- 160,001 במערכות של 64 סיביות. לאחר מכן, מטמון התוכנית יכול להכיל 640,004 תוכניות לכל היותר.
מצב
Microsoft אישרה שזוהי בעיה במוצרי Microsoft המפורטים בסעיף "חל על".