Postgres הסבר עלות

Postgres Hsbr Lwt



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

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

מהי פקודת EXPLAIN?

הפקודה EXPLAIN מציגה את תוכנית הביצוע שמתכנן PostgreSQL יוצר עבור משפט SQL נתון.







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



PostgreSQL הסבר עלות

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



קחו לדוגמה את השאילתה שמוצגת ברשימה הבאה:





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;

אם נריץ את הפקודה explain בצירוף הפשוט הקודם:

EXPLAIN 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;

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



ייתכן שתבחין שלכל שלב שאילתה, PostgreSQL מחזיר את העלות המשוערת של אותה שאילתה.

  1. startup_cost - הוא מציג את העלות המשוערת לאתחול הפעולה לפני שהוא יכול להתחיל להוציא את השורות.
  2. total_cost - העלות הכוללת לאחזור כל השורות.
  3. שורות - הוא קובע את המספר המשוער של שורות שמוחזרות על ידי השאילתה.
  4. רוחב - זה קובע את המספר הממוצע של בתים של כל השורות המוחזרות על ידי הפעולה.

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

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

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

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

אופטימיזציה של השאילתות על סמך עלות

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

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

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

סיכום

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