Postgres הפקודה הסבר ניתוח

Postgres Hpqwdh Hsbr Nytwh



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

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

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







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



מדריך זה דן כיצד להשתמש בפקודה EXPLAIN ANALYZE ב- PostgreSQL כדי להציג ולמטב את ביצועי השאילתה.



PostgreSQL הסבר ניתוח

הפקודה די פשוטה. ראשית, עלינו להוסיף את הפקודה EXPLAIN ANALYZE בתחילת השאילתה שברצוננו לנתח.





תחביר הפקודה הוא כדלקמן:

הסבר ניתוח

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



הבנת פלט השאילתה הסבר ניתוח

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

הפלט מורכב מקבוצה של עמודות המכילות מידע שימושי. העמודות המתקבלות הן כפי שמוצג עם המשמעות שלהן:

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

לְתַכְנֵן – העמודה השנייה היא העמודה PLAN. זה מכיל ייצוג טקסטואלי של כל פעולה או שלב בתוכנית הביצוע. שוב, כל פעולה מסומנת כדי לציין את ההיררכיה של הפעולות.

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

שורות בפועל – עמודה זו מציגה את המספר המדויק של שורות המעובדות בכל שלב בביצוע השאילתה.

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

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

זמן ביצוע – עמודה זו מציגה את הזמן הכולל לביצוע השאילתה. זה כולל גם את הזמן המושקע בתכנון ובזמן ביצוע שאילתות.

PostgreSQL הסבר ניתוח דוגמה

הבה נסתכל על כמה דוגמאות בסיסיות לשימוש במשפט EXPLAIN ANALYZE.

דוגמה 1: בחר הצהרה
הבה נשתמש במשפט EXPLAIN ANALYZE כדי להראות את הביצוע של משפט select פשוט ב-PostgreSQL.

הסבר ניתוח בחר * מתוך wp_users כאשר id > 3;

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

תוכנית שאילתות
-------------------------------------------------- ------------------
Seq Scan on wp_users  (עלות=0.00..10.38 שורות=10 רוחב=2256) (זמן בפועל=0.009..0.010 שורות=7 לולאות=1)
מסנן: (מזהה > 3)
שורות שהוסרו על ידי מסנן: 3
זמן תכנון: 0.995 אלפיות השנייה
זמן ביצוע: 0.021 אלפיות השנייה
(5 שורות)

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

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

לבסוף, זמן הביצוע מציג את זמן הביצוע הכולל של השאילתה. במקרה זה, השאילתה אורכת 0.021ms.

דוגמה 2: ניתוח הצטרפות
הבה ניקח שאילתה מורכבת יותר הכוללת צירוף SQL. לשם כך, אנו משתמשים במסד הנתונים לדוגמה Pagila. אתה יכול להוריד ולהתקין את מסד הנתונים לדוגמה במחשב שלך למטרת הדגמה.

אנו יכולים להריץ הצטרפות פשוטה כפי שמוצג להלן:

להסביר לנתח SELECT f.title, c.name
מתוך הסרט f
JOIN film_category fc ON f.film_id = fc.film_id
JOIN קטגוריה c ON fc.category_id = c.category_id;

לאחר שנפעיל את השאילתה הנתונה, אנו אמורים לראות את הפלט באופן הבא:

הבה נבחן את תוכנית השאילתות הבאה:

  1. לולאה מקוננת - זה מציין שהצירוף משתמש באסטרטגיית חיבור של לולאה מקוננת.
  2. Hash Join - פעולה זו מצטרפת ל-film_category ולטבלאות הסרט באמצעות אלגוריתם Hash join. לפעולה זו עלות של 77.50 ומוערך ב-1000 שורות. עם זאת, הזמן בפועל שלוקח לפעולה זו הוא 0.254 עד 0.439 אלפיות השנייה, והיא מאחזרת 1000 שורות.
  3. Hash Cond - זה מציין שתנאי החיבור משתמש ב-Hash join כדי להתאים לעמודות film_id ולעמודות film_category בטבלאות הסרט.
  4. Seq Scan on film_category - פעולה זו מבצעת סריקה רציפה בטבלת film_category בעלות של 16.00 ומוערך ב-1000 שורות. הזמן בפועל שלוקח לפעולה זו הוא 0.008 עד 0.056 אלפיות השנייה, והיא מאחזרת 1000 שורות.
  5. Seq Scan on film – השאילתה מבצעת סריקה רציפה בטבלת הסרט עם העלויות והשורות המשוערות והממשיות המתקבלות בפעולה זו.
  6. Memoize - פעולה זו מאחסנת את תוצאות החיבור בין film_category לטבלאות סרט לשימוש אחר כך.
  7. מפתח מטמון - זה מציין שמפתח המטמון המשמש לזיכרונות זיכרון מבוסס על העמודה category_id מ-film_category.
  8. מצב מטמון - זה מציין שהשאילתה משתמשת במצב מטמון לוגי.
  9. פגעים, החמצות, פינויים, הצפות - שלוש השורות מספקות סטטיסטיקה לגבי המטמון, מספר ההיטים, החמצות, פינויים והצפות במהלך הביצוע. בלוק זה כולל גם את השימוש בזיכרון במהלך ביצוע שאילתה.
  10. אינדקס סריקת באמצעות category_pkey - זה מציג את הפעולה שמבצעת סריקת אינדקס בטבלת הקטגוריות באמצעות אינדקס המפתח הראשי.
  11. מצב אינדקס - זה מראה שסריקת האינדקס מבוססת על התנאי התואם לעמודת ה-category_id בטבלת הקטגוריות.
  12. זמן תכנון - שורה זו מציגה את הזמן שלוקח לתכנון שאילתה שהוא 3.005 אלפיות שניות.
  13. זמן ביצוע - לבסוף, שורה זו מציגה את זמן הביצוע הכולל של השאילתה שהוא 0.745 אלפיות שניות.

הנה לך! מידע מפורט על ביצוע הצטרפות פשוטה ב-PostgreSQL.

סיכום

גילית את העוצמה והשימוש בהצהרת EXPLAIN ANALYZE ב-PostgreSQL. הצהרת EXPLAIN ANALYZE היא כלי רב עוצמה לניתוח ואופטימיזציה של שאילתות. השתמש בכלי זה כדי לבנות שאילתות יעילות ופחות עתירות משאבים.