במאמר הזה מוסבר איך לבדוק ולבצע אופטימיזציה של מכונת Cloud SQL ל-SQL Server אם שירות המלצות על מכונות עם הקצאות-חסר מזהה במכונה הזו צריכת זיכרון גבוהה.
זיכרון שרת SQL
הזיכרון של SQL Server יכול להתחלק לקטגוריות הבאות:
קובצי מטמון
אלה אובייקטים בדיסק שאפשר לטעון מחדש, כמו דפי מסד נתונים ופרוצדורות מאוחסנות. כתוצאה מכך, שרת SQL יכול להגדיל ולהקטין את האובייקטים האלה בהתאם לניצול הזיכרון. מטמון כולל מאגרי נתונים זמניים ומטמון של תוכניות.
זיכרון קבוע
הזיכרון הקבוע יכול לגדול או להצטמצם. ההתכווצות מתרחשת רק כשאין שימוש בחיבורים, למשל כשמספר החיבורים יורד או כשמספר השאילתות שמופעלות קטן. הוא שונה ממטמון. אם אין מספיק זיכרון קבוע, יכול להיות שייגמר הזיכרון של SQL Server. הזיכרון הקבוע כולל זיכרון חיבורים והקצאות זיכרון.
תקורה של שרת SQL
התקורה של SQL Server כוללת שרשורים ומחסניות.
In-Memory OLTP
OLTP בזיכרון כולל טבלאות בזיכרון וקבוצות קבצים בזיכרון.
השימוש בזיכרון על ידי SQL Server נשלט על ידי ההגדרות maximum server memory ו-memory.memory.limitmb. הפרמטר memory.memory.limitmb מוגדר אוטומטית על ידי Cloud SQL.
מידע נוסף על memory.memory.limitmb זמין במאמרי העזרה של Microsoft.
אפשרויות לאופטימיזציה של הזיכרון
כדי לבדוק אם צריך לכוונן את הזיכרון של מופע מסוים, מבצעים את הפעולות הבאות:
- בודקים את הערך של הדגל
max server memory (mb).מומלץ לאפשר ל-Cloud SQL לנהל את הערך של הדגל הזה. אם אתם צריכים לנהל את הערך הזה באופן ידני, תוכלו להשתמש בנוסחת השימוש
max_server_memory (mb)שמפורטת במאמר בנושא שיטות מומלצות כדי למנוע מצב שבו SQL Server צורך את כל הזיכרון.מידע נוסף זמין במאמר בנושא דגלים מיוחדים.
- עוקבים אחרי הסימון
Page life expectancy.
Page life expectancyמציין את משך הזמן בשניות שהדף הכי ישן נשאר במאגר החוצץ. הערך הזה צריך להיות גדול מ-300, כמומלץ על ידי מיקרוסופט. אם הערך נמוך מ-300 באופן עקבי, יכול להיות שהמופע מתמודד עם ניצול גבוה של הזיכרון. מריצים את השאילתה הבאה כדי לעקוב אחריPage life expectancy.SELECT [object_name], [counter_name], [cntr_value] FROM sys.dm_os_performance_counters WHERE [object_name] LIKE '%Manager%' AND [counter_name] = 'Page life expectancy'
- בודקים את הדגל
Memory Grants Pending.
Memory Grants Pendingמציין את המספר הכולל של תהליכים שממתינים להקצאת זיכרון של סביבת עבודה. מריצים את השאילתה הבאה כדי לבדוק אתMemory Grants Pending. אם השאילתה הזו מציגה באופן עקבי שההרשאות בהמתנה, זה מצביע על ניצול גבוה של הזיכרון. אפשר לצמצם את זמן ההמתנה על ידי הפעלת שאילתה במסד הנתונים והתאמה של כל הצהרה שממתינה לזיכרון.SELECT @@SERVERNAME AS [Server Name], RTRIM([object_name]) AS [Object Name], cntr_value AS [Memory Grants Pending] FROM sys.dm_os_performance_counters WITH(NOLOCK) WHERE [object_name] LIKE N'%Memory Manager%' -- Handles named instances AND counter_name = N'Memory Grants Pending'
שימוש ב-Metrics Explorer כדי לזהות את השימוש בזיכרון
אפשר לבדוק את השימוש בזיכרון של המופע באמצעות המדד database/memory/components.usage בMetrics Explorer.