DBA שמגדיל ראש: מתי באמת כדאי להשתמש ב-Extended Events?

6 בינואר 2013

תגובה אחת

הסטוריה

תקציר תולדות XE:

  • בגירסת 2008: הוצגו על ידי מיקרוסופט כתחליף ל-Trace
  • גרמו לסלידה אצל מרבית ה-DBAים בגלל תחביר מהגיהנום
  • מיקרוסופט הכניסה אירועים שניתן לאתר אותם רק באמצעות EX
  • עדיין DBAים לא אימצו את הטכנולוגיה
  • בגירסת 2012 נוסף GUI שמאפשר בניה של XE בלי הרבה מאמץ
  • ועדיין DBAים מעדיפים את SQL Trace
  • מיקרוסופט הודיעה על הפסקת התמיכה בפרופיילר בגירסאות עתידיות מה שישאיר רק את XE
  • אז כנראה שבקרוב לא תהיה לנו ברירה

 

גם אני כמעט ולא משתמש ב-XE. אבל יש משהו אחד שבו XE חזקים מאוד, יותר מ-Trace: איתור שגיאות.

 

למה זה טוב?

יש לכם סביבת פרודקשן. אתם מן הסתם טורחים לנטר כשלונות של Jobs, איטיות ברפליקציה, בעיות ב-Mirroring וכדומה. אבל מה לגבי סתם שגיאות שמגיעות מבסיס הנתונים? למשל אפליקציה מנסה להפעיל פרוצדורה וחוטפת שגיאה על שדה שלא מאפשר NULL או פרמטרים חסרים.

מצד אחד: מה אכפת לכם, מישהו באפליקציה כבר בטח יתפוס את זה וזה יירשם בלוגים.

מצד שני: יש כרגע משתמש שקיבל שגיאה, הוא לא מצליח לקבל שירות והבעיה היא בוודאות בבסיס הנתונים.

אז מה עושים? תלוי כמה אתם מגדילים ראש. אצל אחד הלקוחות שלנו, סטרטאפ ישראלי בשם Jifiti (שאגב מומלץ ממניעים ציוניים להוריד את האפליקציה שלהם, ואם יש לכם זמן גם לדרג אותם ב-Appstore/Google Play), אנחנו אחראים על בסיס הנתונים. החלטנו לא לחכות לתלונות ממשתמשים על בעיות שנובעות ממה שבתחום אחריותנו – ולכן רצינו לנטר שגיאות ברמת ה-DB. זה טוב במיוחד בסביבות אינטרנט ששם המשתמשים לא ממש מתלוננים. במקרה של שגיאה הם פשוט מעדיפים לעבור לאתר אחר או לפייסבוק.

וכאן מגיע היתרון הגדול של XE: היכולת לנטר שגיאות. בצורה טובה הרבה יותר מ-Trace. מי שינסה לאסוף את השגיאות באמצעות Trace אמנם יצליח לעשות את זה בקלות. אבל על כל שגיאה מן הסתם אתם רוצים גם לראות את השאילתה/פקודה שגרמה לשגיאה. לגיטימי, לא?

ובכן, לא כ”כ פשוט באמצעות Trace. הבעיה היא שהשאילתה היא לא חלק מה-columns החוזרות עבור אירוע של שגיאה. אז צריך (תיאורטית!) לאסוף את כל השאילתות שרצות מול השרת, ובנוסף את השגיאות. במקרה של שגיאה צריך להצליב נתונים דרך ה-SPID, זמן וכו’ וכך לדעת די בוודאות מה השאילתה שגרמה לשגיאה. סיוט על סף ה-“לא פרקטי”.

XE, לעומת זאת, נותן פתרון פשוט: לאירוע של שגיאות (ולמעשה לכל האירועים, אני חושב) אפשר לצרף את ה-sql_text – שזו השאילתה שגרמה לשגיאה.

תוסיפו את קלות ההגדרה שמתאפשרת עם ה-SSMS של גירסת 2012, וקיבלתם אופציה פשוטה להקמה ותפעול של ניטור שגיאות.

יש כמה gotchas קטנים, אז בואו נעבור על הדרך הנכונה לעשות את זה.

המדריך המלא לניטור שגיאות באמצעות XE

שלב א’ – טגנו בצל (ככה נפתח כל מתכון של פולנים, לא? סבתא שלי תהיה גאה בי)

שלב ב’ – הקימו XE Session:

http://www.sqlserver.co.il/?p=4543

הוסף תגובה
facebook linkedin twitter email

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *

תגובה אחת

  1. Ruth3 במרץ 2013 ב 20:42

    No more s***. All posts of this qaultiy from now on

    הגב