PracticU

בדיקת ביצועים עם SQL Profiler

בלי כתוביותעם כתוביות
PracticU › קורס Entity Framework Core - עבודה עם מסד נתונים בדוט-נט › בדיקת ביצועים עם SQL Profiler
מילון מושגים:
שאילתה - בקשה למסד נתונים לשלוף, להוסיף, לעדכן או למחוק נתונים, לרוב בשפת SQL.
מסד נתונים - אוסף מאורגן של נתונים המאוחסן כך שאפשר לשמור, לחפש, לעדכן ולשלוף אותו ביעילות, לרוב באמצעות שפת שאילתות.
SQL Server - מערכת ניהול מסדי נתונים יחסיים של מיקרוסופט, הנשלטת בשפת T-SQL.
שרת - מחשב או תוכנה שמספקים שירות למחשבים אחרים (לקוחות) ברשת, למשל אחסון קבצים, אתר אינטרנט או מסד נתונים, ומגיבים לבקשות שלהם.
Entity Framework - ספריית מיקרוסופט שממפה בין אובייקטים בקוד לבין טבלאות במסד נתונים, ומאפשרת לעבוד עם הנתונים בלי לכתוב SQL ישיר.
פריימוורק - מסגרת תוכנה שמספקת מבנה וכלים מוכנים לפיתוח יישומים, כדי לחסוך כתיבת קוד חוזר.

בדיקת ביצועים עם SQL Profiler
כדי לזהות שאילתות איטיות במסד נתונים בלי לגעת בקוד של האפליקציה, אפשר להשתמש בכלי מעקב של SQL Server. ההרצאה מציגה שני כלים כאלה ומדגימה סינון לפי זמן ריצה.
הכלים
1. SQL Server Profiler: נפתח מתפריט Tools. מציג כל שאילתה שמתבצעת במסד, מתי התחילה ומתי הסתיימה, האם נכתב משהו ואת ה-Duration במיקרו-שניות (מיליון מיקרו-שניות הן שנייה). הכלי נחשב מיושן, ויש כלי חדש יותר שמחליף אותו.
2. Extended Events: הכלי החדש. אפשר להתחיל Session עם Launch Session, והוא מקליט את הפעילות. ההקלטה כוללת הרבה רעש מפעילות רקע של SQL Server.
סינון והדגמה
1. פילטר לפי מסד: מגדירים פילטר ש-database name שווה ל-GiftShop, כך שרואים רק את השאילתות שנשלחות למסד שלנו. בדוגמה השאילתה של קבלת כל המתנות לקחה 561 מיקרו-שניות.
2. פילטר לפי Duration: מוסיפים פילטר ש-Duration גדול או שווה לשלוש שניות, כלומר שלושה מיליון מיקרו-שניות. כל השאילתות המהירות נעלמות מהחלון.
3. סימולציה של שאילתה איטית: ב-SQL עצמו כותבים use GiftShop ואז select על המתנות. השאילתה הרגילה לקחה 739 מיקרו-שניות, פחות ממילי-שנייה, ולכן לא הופיעה בפילטר.
4. השהיה מלאכותית: מוסיפים WAIT FOR DELAY עם הזמן 0 שעות, 0 דקות, 4 שניות. מכל ה-Batch, סדרת פקודות אחת בסשן אחד, נתפסת עכשיו שאילתה עם Duration של ארבע שניות ומשהו, וניתן לראות גם את הטקסט שלה.
5. הסרת הפילטר: מוחקים את הפילטר של ה-Duration ורואים שוב את כל הפעולות.
שימו לב
Entity Framework עצמה לא מייצרת שאילתה איטית כאן. ההשהיה הוגדרה ידנית רק לצורך הדגמה. בפועל הכלי עוזר לאתר צווארי בקבוק, שאילתות select מורכבות מדי, insert בעייתי ופעילות כבדה על המסד.
אחרי ההרצאה אפשר להפעיל Session, לסנן לפי שם המסד ולפי משך שאילתה, ולמצוא ממנו את הטקסט של שאילתה איטית.

פרקי ההרצאה: בדיקת ביצועים עם SQL Profiler

  1. 00:00

    הפעלת SQL Server Profiler

  2. 00:57

    קריאת נתוני השאילתות

  3. 01:51

    הכלי החדש Extended Events

  4. 02:48

    הרצת Launch Session

  5. 03:26

    הגדרת פילטר על הרעש

  6. 04:24

    איתור שאילתות איטיות

  7. 05:17

    יצירת Query בדאטאבייס

  8. 05:50

    מדידת זמן הביצוע

תמלול ההרצאה: בדיקת ביצועים עם SQL Profiler

הטקסט המלא של הדקות הראשונות בהרצאה «בדיקת ביצועים עם SQL Profiler» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    למסד הנתונים SQL Server וכמובן לעוד הרבה מסדים נתונים יש כלים שמאפשרים לנתח את הפרפורמנס, את המהירויות, את הביצועים של הדאטאבייס. כלי אחד כזה אנחנו יכולים להגיע אליו כאן מטולס, נקרא SQL Server Profiler, בואו רגע נדליק אותו, נתחבר, בואו נגיד נקרא לזה טסטינג, גיפט,

  2. 00:26

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

  3. 00:38

    הכלי הזה ספציפית sql server profiler הוא קצת נחשב מיושן ויש כלי חדש יותר שמחליף אותו. סתם לדוגמה אם אני ארצה רגע לעשות שאילתא בואו נחזור לכאן ונריץ את התוכנית שלנו ופשוט נקבל את כל המתנות שיש לנו כרגע.

  4. 00:57

    אז אם אנחנו חוזרים בחזרה לכלי אנחנו יכולים לראות שיש כאן כל מיני פעולות שהתבצעו, הנה יש לנו פה את השאילתה שהייתה, מתי היא התחילה סטארטינג, מתי היא הסתיימה, אנחנו רואים פה את הקומפליט ואנחנו יכולים לראות כל מיני הגדרות לגבי זה, שימו לב שזה גם מתמלא כל הזמן בכל מיני פעילויות שמתרחשות ברקע כי sql כמובן משרתת עוד דברים במחשב ואנחנו יכולים

  5. 01:22

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

  6. 01:37

    זה כמובן פחות משנייה. יש לנו כאן כל מיני פרמטרים. הכלי הזה נחשב קצת מיושן, בואו נסתכל על כלי קצת יותר חדש, נסגור אותו, נגיד לו כן, אנחנו רוצים לצאת, נחזור בחזרה, והכלי הקצת יותר חדש נמצא פה והוא נקרא Extended Event.

  7. 01:56

    פרופיילר ה-X זה Extended, בעצם חילקו את זה לשני חלקים. סטנדרט זה כל מיני איבנטים שמתרחשים במסד הנתונים שהם כלליים, זה יכול להיות לוג אין, לוג אאוט, שאפליקציה מבצעת, הכוונה להתחברות לדאטאבייס, פתיחת סשן מול הדאטאבייס, סשן הכוונה, אני עכשיו מתקשר עם הדאטאבייס, כל מה שקורה במהלך התקשורת הזאת,

  8. 02:24

    עושים לנו סשן איי-די קוד מסוים שאפשר אחר כך לזהות מי אנחנו ומה עשינו אז כל הדברים והמנהלות האחרות נמצאות כאן tsql זה קיצור של transact sql זה בעצם הרחבה של שפת sql tsql זאת הרחבה של שפת sql עבור sql סרבר משתמשים בפקודות האלה כאשר אנחנו כותבים שאילתות יותר מורכבות שנמצאות בתוך הדאטאבייס עצמו השאילתות האלה נקראות stored procedures או functions, אין לנו כרגע

  9. 02:56

    stored procedure אז אנחנו רוצים להתעסק עם הסטנדרט ולראות שאילתות בודדות שאנחנו מייצרים. בואו נבצע launch session, ככה אנחנו עושים את זה, מה קשור אם אני launch session ואנחנו יכולים פשוט לגשת ולהתחיל לבצע פעולות. נניח אנחנו הולכים ושוב פעם מבצעים את השאילתה, תביא לי את כל המתנות, הנה ה-select, בואו

  10. 03:18

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

  11. 03:32

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

  12. 03:52

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

  13. 04:09

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

  14. 04:20

    אנחנו יכולים לראות כאן את הדו ריישן, הנה הדו ריישן. אנחנו רואים שזה יעלה מאוד מאוד מהר, 561 מיקרו שניות.

  15. 04:30

    1 חלקי מיליון, 561 מיליוניות השנייה. למה השימוש של הכלי הזה ושל הכלי הקודם של ה-SQL Server Profiler? אז השימוש זה בעצם לאתר מצבים שפתאום יש לנו שאילתא שהיא לא כל כך מהירה, שהיא איטית, שהיא bad performance, מה שנקרא, אולי עשינו משהו לא כזה בסדר, והבאנו המון דברים מיותרים, והדאטאבייס עכשיו

  16. 04:53

    יש בו איזשהו עיכוב. בואו נעשה הדמיה של הדבר הזה. נניח שאנחנו רוצים לייצר שאילתא שהיא מאוד איטית, ומבין כל השאילתות לגלות את השאילתות האיטיות האלה.

  17. 05:03

    כמובן ש-Entity Framework לא מייצרת שאילתא איטית, היא מייצרת שאילתא די מהירה, יכול להיות שאנחנו נגדיר לה מתישהו לעשות איזו שאילתא לא בסדר, או קצת איטית, אבל זה לא המצב שיש לנו כרגע.

  18. 05:14

    לכן מה שאני אעשה, אני פשוט אצייצר קווירי. יש לנו פה אפשרות לייצר קווירי חדשה, קווירי שאילתה, אבל ממה שאני כותב פה הולך להתבצע ישירות בתוך הדאטאבייס, אז אני אגדיר כרגע Select All From Gifts, כאשר ב-Default אני רואה את זה כאן, מסד הנתונים זה לא Giftshop, זה מסד נתונים כללי שנקרא מאסטר, הוא איזשהו מסד נתונים שקיים ב-SQL Server, מסד נתונים ראשי כזה.

  19. 05:42

    שנייה לפני זה אני אגיד למערכת to use gift shop בצורה כזאת. בדרך כלל שמים גם נקודה פסיק אחרי פקודות אם יש לי סדרה של פקודות אבל לא חייבים במקרה הזה.

  20. 05:53

    זה כמובן לא שאילתה שתיקח הרבה זמן אבל אנחנו כן רוצים לראות אותה בכלי הזה של הפרופיילר. אז בואו נחזור ונבצע אקסקיוט והנה אנחנו רואים שהתבצעה מאוד מהר.

  21. 06:03

    כאן אנחנו יכולים לראות את הדוריישן שימו לב שהדוריישן הוא לא הוא אפילו לא הגיע לשנייה זה ברור. אנחנו מסתכלים על הכלי הזה והנה השאילתא שלנו.

  22. 06:13

    אוקיי, מה הדוריישן שלה? הדוריישן שלה היה 739 מיקרו שנייה.

לקורס המלא: קורס Entity Framework Core

ההרצאה הקודמת: יירוט שאילתות - Intercepting Queries

ההרצאה הבאה: אסטרטגיות טעינת המידע - של Entity Framework Core

הרצאות קשורות מקורסים אחרים

  • בדיקת ביצועים של דיסק במכונה וירטואלית בענן
  • בדיקות ביצועים
  • בדיקת גבולות
  • ביצועים של RAID 5 מול RAID 10

קורסים נוספים במסלול

  • קורס דוט-נט - NET Core. - עם Rest API
  • קורס ASP.NET
  • קורס MVC
  • קורס Git ו-GitHub עם Visual Studio