במאמר הזה מוסבר איך לבדוק ולשפר מכונה של Cloud SQL ל-SQL Server, אם המכונה הזו זוהתה על ידי המודל להמלצות על מכונות עם הקצאת חסר כבעלת צריכת זיכרון גבוהה.
זיכרון של שרת SQL
אפשר לחלק את הזיכרון של SQL Server באופן הבא:
קובצי מטמון
אלה אובייקטים בדיסק שאפשר לטעון מחדש, כמו דפי מסד נתונים ופרוצדורות מאוחסנות. כתוצאה מכך, SQL Server יכול להגדיל ולהקטין את האובייקטים האלה על סמך ניצול הזיכרון. מטמונים כוללים מאגרי מאגרים ומטמוני תוכניות.
זיכרון קבוע
הזיכרון הקבוע יכול לגדול ולהצטמצם. הוא מתכווץ רק כשהוא לא בשימוש, למשל כשמספר החיבורים או מספר השאילתות שמופעלות יורד. הוא שונה ממטמונים. אם אין מספיק זיכרון קבוע, יכול להיות שייגמר הזיכרון ב-SQL Server. זיכרון קבוע כולל זיכרון חיבורים והקצאות זיכרון.
תקורה של שרת SQL
התקורה של SQL Server כוללת שרשורים ומחסניות.
In-Memory OLTP
In-Memory OLTP כולל טבלאות In-Memory וקבוצות קבצים של In-Memory.
צריכת הזיכרון של 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.