Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "אופטימיזציה של שאילתות"— Presentation transcript:

1 אופטימיזציה של שאילתות
Query Optimization

2 מדוע אופטימיזציה נחוצה?
נתונה שאילתה בגודל n ומסד נתונים בגודל m, מהו גודל התוצאה? לדוגמה: יחס R(A) עם 2 שורות, שבאחת מהן יש את הערך 0 ובשניה יש את הערך 1 כמה שורות יש ב- R x R? וכמה יש ב- R x R x R ? גודל התוצאה יכול להיות O(mn)

3 סיבוכיות נתונים Data Complexity
בדרך כלל שאילתות הנן קטנות ולכן ניתן להניח שגודל השאילתה קבוע לכן, גודל התוצאה הוא O(ma), כאשר a הוא קבוע המציין את גודל השאילתה data complexity הנו מונח טכני המציין שזמן הריצה של חישוב שאילתה נמדד בהנחה שגודל השאילתה קבוע ורק גודל הנתונים משתנה מקלט אחד לשני

4 ארכיטקטורה של אופטימייזר Optimizer Architecture
Rewriter Algebraic Space Cost Model Planner Size-Distribution Estimator Method-Structure Space

5 ארכיטקטורה של אופטימייזר
משכתב (Rewriter): מוצא שאילתות שקולות שניתן אולי לחשב מהר יותר מאשר את השאילתה המקורית (לדוגמה, שאילתה שבה סדר פעולות הצירוף שונה מאשר בשאילתה המקורית) כל השאילתות הללו מועברות למתכנן מתכנן (Planner): בוחן את כל האפשרויות השונות לחישוב השאילתה ובוחר את האפשרות הזולה ביותר (קרי, המהירה ביותר) המתכנן משתמש במודולים האחרים, כדי למצוא את האפשרות הזולה ביותר

6 ארכיטקטורה של אופטימייזר (המשך)
מרחב אלגברי (Algebraic Space): קובע איזה סוגים של שאילתות ייבדקו לדוגמה, אין טעם לבדוק שאילתה שיש בה מכפלה קרטזית ועדיף לחפש שאילתה שקולה ללא מכפלה קרטזית מרחב המבנים והשיטות (Method-Structure Space): קובע איזה סוגים של אינדקסים קיימים ובאיזה אלגוריתמים ניתן להשתמש לחישוב הפעולות האלגבריות המופיעות בשאילתה לדוגמה, איזה אלגוריתמים אפשריים לחישוב צירוף

7 ארכיטקטורה של אופטימייזר (המשך)
מודל המחיר (Cost Model): מעריך את המחיר של חישוב השאילתה לפי כל אחת מהתוכניות משתמש במודול שמעריך את גודל התוצאות מעריך גודל התוצאה (Size-Distribution Estimator): מעריך את גודל מסד הנתונים, גודל האינדקסים, שכיחות הערכים עבור האטריביוטים השונים וגודל תוצאות הביניים

8 מרחב אלגברי Algebraic Space
נדון באופטימיזציה של שאילתות המורכבות מבחירה, הטלה וצירוף (מכפלה קרטזית היא מקרה מיוחד של צירוף) ניתן להציג שאילות אלה ע"י עץ דוגמה של יחסים ושל שאילתה: emp(name, age, sal, dno) dept(dno, dname, floor, mgr, ano) act(ano, type, balance, bno) bank(bno, bname, address) select name, floor from emp, dept where emp.dno=dept.dno and sal>100K

9 3 עצים name, floor name, floor name, floor ⋈ dno=dno ⋈ dno=dno
sal>100K ⋈ dno=dno dno, name dno, floor sal>100K DEPT sal>100K EMP DEPT EMP DEPT name,sal,dno T1 T2 T3 EMP

10 ביצוע פעולות בחירה והטלה מוקדם ככל האפשר
ביצוע פעולות בחירה והטלה מוקדם ככל האפשר שלושת העצים נבדלים זה מזה באופן שבו מבוצעות פעולות הבחירה וההטלה בעץ T3 פעולות הבחירה וההטלה מבוצעות מוקדם ככל האפשר (maximal pushing of selections and projections) המשכתב מוצא ביטוי שקול לביטוי המקורי שבו פעולות ההטלה והבחירה מבוצעות מוקדם ככל האפשר ביצוע פעולות בחירה והטלה מוקדם ככל האפשר מקטין את תוצאות הביניים מוקדם ככל האפשר ככל שתוצאות הביניים קטנות יותר, המחיר הכולל של חישוב השאילתה הנו תמיד (קרי, בכל תוכנית אפשרית) קטן יותר ביצוע מוקדם ככל האפשר של פעולות בחירה והטלה אינו מייקר אותן

11 ביצוע הטלה ובחירה on the fly
פעולות בחירה והטלה מבוצעות כחלק מפעולות אחרות בנוסף, פעולות בחירה והטלה שמופיעות בזו אחר זו מבוצעות ברצף אחד לכן, פעולות בחירה והטלה אינן מצריכות כתיבה לדיסק או קריאה מהדיסק פעולות בחירה מבוצעות כאשר היחסים נקראים לראשונה פעולות הטלה מבוצעות תוך כדי יצירת התוצאות של פעולות קודמות

12 מגבלה 1 על המרחב האלגברי המרחב האלגברי עשוי לכלול מספר רב של שאילתות שכולן שקולות לשאילתה המקורית חשוב מאוד לצמצם מרחב זה, כדי להקטין את מספר האפשרויות שיש לבדוק מגבלה 1: כוללים במרחב האלגברי רק שאילתות, שבהן פעולות הבחירה וההטלה מבוצעות מוקדם ככל האפשר ומבוצעות on the fly איזה משלושת העצים מקיים מגבלה זו?

13 מגבלה 2 על המרחב האלגברי מכיוון שהמיקום של פעולות הבחירה וההטלה נקבע ע"י מגבלה 1, אפשר לכתוב עצי שאילתות רק עם פעולות צירוף מגבלה 2: לא מבצעים מכפלות קרטזיות, אלא אם כן הדבר הכרחי (כי בדר"כ מכפלה קרטזית מייצרת תוצאה גדולה ולכן המחיר של יקר) דוגמה: select name, floor, balance from emp, dept, acnt where emp.dno=dept.dno and dept.ano = acnt.ano

14 באיזה עצים יש מכפלה קרטזית?
3 עצים ⋈ ano=ano ⋈ ano=ano, dno=dno ⋈ dno=dno ⋈ dno=dno ACNT ACNT ⋈ ano=ano EMP EMP DEPT EMP ACNT ACNT DEPT T1 T2 T3

15 מגבלה 3 על המרחב האלגברי בפעולת צירוף, היחס השמאלי הנו החיצוני (outer relation) והיחס הימני הנו הפנימי (inner relation) – מינוח זה מתאים לשיטות של block & index nested-loops joins מגבלה 3: היחס הפנימי הנו יחס מבסיס הנתונים ולא תוצאת ביניים דוגמה: select name, floor, balance from emp, dept, acnt, bank where emp.dno=dept.dno and dept.ano=acnt.ano and acnt.bno = bank.bno

16 3 עצים איזה עצים מקיימים מגבלה 3? ⋈ bno=bno ⋈ bno=bno ⋈ ano=ano BANK
ACNT ⋈ dno=dno ACNT ⋈ dno=dno ⋈ bno=bno ⋈ dno=dno EMP DEPT DEPT ACNT BANK EMP EMP DEPT T1 T2 T3

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

18 המתכנן (Planner) משתמשים בתכנות דינמי כדי למצוא את הסדר הזול ביותר של ביצוע צירוף של N יחסים אינטואיציה: לכל יחס בסיס r, מצא את כל הדרכים האפשריות לקריאת r, הערך את המחיר של כל אחת מהדרכים הללו ובחר בדרך הזולה ביותר לכל זוג יחסים, מצא את כל הדרכים האפשריות לביצוע צירוף של שני היחסים, תוך שימוש בדרכים הזולות ביותר שנמצאו בשלב הקודם לקריאת היחסים הללו, ובחר בדרך הזולה ביותר לכל צירוף של k-1 יחסים, מצא את הדרך הזולה ביותר להרחיבו לצירוף של k-1 היחסים הללו ועוד יחס אחד נוסף r בהינתן כל הדרכים לביצוע צירוף של N יחסים, בחר בדרך הזולה ביותר למעשה שומרים בכל שלב לא רק את התוכנית הזולה ביותר, אלא את התוכנית הזולה ביותר לכל סדר מעניין (פרטים בהמשך)

19 הזרמת התוצאה בחלקים לצירוף הבא (Pipelining Joins)
נניח שצריך לחשב את הביטוי (Emp ⋈ Dept) ⋈ Acnt בעקרון, צריך לחשב את הצירוף Emp ⋈ Dept ובמהלך החישוב לכתוב את התוצאה לדיסק בגמר החישוב, צריך לקרוא את התוצאה מהדיסק ולחשב את הצירוף שלה עם היחס Acnt בשיטות של block & index nested-loops joins אפשר לוותר על כתיבת תוצאת הביניים לדיסק

20 Pipelining Joins - Example
Emp blocks Dept blocks Acnt blocks Output blocks Buffer Read block from Emp Write final output 2 3 1 Find matching Dept tuples using index Find matching Acnt tuples using index 4

21 הסיבה למגבלה 3 עצים שבהם היחס הפנימי הוא תמיד מבסיס הנתונים נקראים left-deep trees והם מאפשרים לבצע block & index nested-loops join בשיטת ה- pipeline, תוך ניצול מקסימלי של האינדקסים שקיימים עבור היחסים של מסד הנתונים

22 תזכורת לגבי אופן הפעולה של שיטת התכנות הדינמי
כדי לקבוע את התוכנית האופטימלית לחישוב הצירוף של תת-קבוצה {R1, R2, R3, R4}, בוחרים את התוכנית האופטימלית מבין האפשרויות הבאות: התוכנית האופטימלית עבור {R2, R3, R4} כאשר מוסיפים לה בשלב האחרון צירוף עם התוכנית האופטימלית לקריאת R1 התוכנית האופטימלית עבור {R1, R3, R4} כאשר מוסיפים לה בשלב האחרון צירוף עם התוכנית האופטימלית לקריאת R2 התוכנית האופטימלית עבור {R2, R1, R4} כאשר מוסיפים לה בשלב האחרון צירוף עם התוכנית האופטימלית לקריאת R3 התוכנית האופטימלית עבור {R2, R3, R1} כאשר מוסיפים לה בשלב האחרון צירוף עם התוכנית האופטימלית לקריאת R4

23 אבל לא מספיק לחשב רק את המחיר האופטימלי לכל תת-קבוצה
רוצים לחשב: (R(A,B) ⋈ S(B,C)) ⋈ T(B,D) יתכן ש- sort-merge join של R ו- S אינו היעיל ביותר, אבל הוא מייצר תוצאה שממוינת על B אם גם T ממוין על B, אז הצירוף של התוצאה הנ"ל עם T (בשיטת ה- sort-merge join) זול עד כדי כך, שהמחיר הכולל הוא הזול ביותר

24 סדר מעניין Interesting Orders
כאמור, יש שיטות שבהן המחיר קטן יותר אם היחסים (או אחד מהם) הנם ממוינים מראש על האטריביוטים של הצירוף (למשל, בשיטה של sort-merge join) לכן, חשוב לייצר תוכניות (עבור צירוף של k יחסים) שבהן התוצאה ממוינת על אטריביוטים המשתתפים בפעולת צירוף מאוחרת יותר לכל סדר מעניין (interesting order) שומרים את התוכנית הזולה ביותר אם התוכנית הזולה ביותר (מתוך כלל התוכניות) הנה ללא סדר, אז שומרים גם אותה

25 דוגמה רוצים לחשב את השאילתה select name, mgr from emp, dept
where emp.dno=dept.dno and sal>30K and floor = 2 Indexes: B+tree index on emp.sal, B+tree index on emp.dnp, hashing index on dept.floor Join Methods: Block and index nested-loops, and sort-merge מחירי החישוב המופיעים בדוגמה נקבעו באופן שרירותי

26 Step 1 – Accessing Single Relations
Interesting Order Plan Cost emp emp.dno Access through B+tree on emp.dno 700 Access through B+tree on emp.sal Sequential scan 200 600 dept Access through hashing on dept.floor Sequential scan 50 מה שומרים לשלב הבא?

27 Step 2 – Joining 2 Relations
Join Method Outer/Inner Plan Cost nested loops emp/dept For each emp tuple obtained through B+Tree on emp.sal, scan dept through hashing index on dept.floor to find tuples matching on dno 1800 For each emp tuple obtained through B+Tree on emp.dno and satisfying selection, scan dept through hashing index on dept.floor to find tuples matching on dno 3000

28 Step 2 – Joining 2 Relations
Join Method Outer/Inner Plan Cost nested loops dept/emp For each dept tuple obtained through hashing index on dept.floor, scan emp through B+Tree on emp.sal to find tuples matching on dno 2500 For each dept tuple obtained through hashing index on dept.floor, scan emp through B+Tree on emp.dno to find tuples satisfying the selection on emp.sal 1500

29 Step 2 – Joining 2 Relations
Join Method Outer/ Inner Plan Cost sort merge Sort the emp tuples resulting from accessing the B+Tree on emp.sal into L1 Sort the dept tuples resulting from accessing the hashing index on dept.floor into L2 Merge L1 and L2 2300 Merge L2 and the emp tuples resulting from accessing the B+Tree on emp.dno and satisfying the selection on emp.sal 2000

30 התוכנית הנבחרת מהי התוכנית הנבחרת?

31 מודל המחיר Cost Model כבר הוסבר כיצד מחשבים את המחיר של כל שיטת חישוב
עכשיו נסביר איך מעריכים את גודל התוצאה

32 Estimating Result Sizes

33 בחירת תוכנית לחישוב צירוף של שלושה יחסים
בחירת תוכנית לחישוב צירוף של שלושה יחסים רוצים לחשב צירוף של שלושת היחסים: Reserves, Sailors ו- Boats שתי האופציות המקיימות את המגבלות שהוזכרו קודם (תוך התעלמות מסדר היחסים בפעולת הצירוף הראשונה) הנן: (Sailors ⋈ Reserves) ⋈ Boats (Reserves ⋈ Boats) ⋈ Sailors ההחלטה מהי התוכנית הזולה יותר תלויה בין היתר בשאלה איזה תוצאת ביניים היא קטנה יותר

34 אנליזה של גודל התוצאות צריך להעריך את גודל התוצאה של הצירוף (Sailors ⋈ Reserves) לעומת גודל התוצאה של הצירוף (Reserves ⋈ Boats) ה- DBMS שומר סטטיסטיקות לגבי היחסים והאינדקסים סטטיסטיקות אלה מעודכנות מפעם לפעם, אבל לא בכל פעם שמעדכנים את מסד הנתונים

35 Statistics Maintained by DBMS
Cardinality: Number of tuples NTuples(R) in each relation R Size: Number of pages NPages(R) in each relation R Index Cardinality: Number of distinct key values NKeys(I) for each index I Index Size: Number of pages INPages(I) in each index I Index Height: Number of non-leaf levels IHeight(I) in each B+ Tree index I Index Range: The minimum value ILow(I) and maximum value IHigh(I) for each index I

36 Estimating Result Sizes
SELECT attribute-list FROM relation-list WHERE term1 and ... and termn Consider The maximum number of tuples is the product of the cardinalities of the relations in the FROM clause The WHERE clause is associating a reduction factor with each term Estimated result size is: maximum size times product of reduction factors

37 Estimating Reduction Factors
column = value: 1/NKeys(I) if there is an index I on column. This assumes a uniform distribution. Otherwise, System R assumes 1/10. column1 = column2: 1/Max(NKeys(I1),NKeys(I2)) if there is an index I1 on column1 and I2 on column2. If only one column has an index, we use it to estimate the value. Otherwise, use 1/10. column > value: (High(I)-value)/(High(I)-Low(I)) if there is an index I on column.

38 Example Cardinality(R) = 1,000 * 100 = 100,000
Cardinality(S) = 500 * 80 = 40,000 NKeys(Index on R.agent) = 100 High(Index on Rating) = 10, Low = 0 SELECT * FROM Reserves R, Sailors S WHERE R.sid = S.sid and S.rating > 3 and R.agent = ‘Joe’

39 Example (cont.) Maximum cardinality: 100,000 * 40,000
Reduction factor of R.sid = S.sid: 1/40,000 Reduction factor of S.rating > 3: (10–3)/(10-0) = 7/10 Reduction factor of R.agent = ‘Joe’: 1/100 Total Estimated size: 700


Download ppt "אופטימיזציה של שאילתות"

Similar presentations


Ads by Google