1 אופטימיזציה של שאילתות Query Optimization. 2 מדוע אופטימיזציה...
-
date post
19-Dec-2015 -
Category
Documents
-
view
226 -
download
2
Transcript of 1 אופטימיזציה של שאילתות Query Optimization. 2 מדוע אופטימיזציה...
1
אופטימיזציה של שאילתות
Query Optimization
2
?מדוע אופטימיזציה נחוצה
ומסד נתונים n נתונה שאילתה בגודל •מהו גודל התוצאה?, mבגודל
שורות, שבאחת 2עם R(A) לדוגמה: יחס •1 ובשניה יש את הערך 0מהן יש את הערך
? R x R כמה שורות יש ב- – ?R x R x Rוכמה יש ב- –
O(mn)גודל התוצאה יכול להיות •
3
סיבוכיות נתונים Data Complexity
בדרך כלל שאילתות הנן קטנות ולכן ניתן •להניח שגודל השאילתה קבוע
הוא a, כאשר O(ma)לכן, גודל התוצאה הוא •קבוע המציין את גודל השאילתה
•data complexity הנו מונח טכני המציין שזמן הריצה של חישוב שאילתה נמדד
בהנחה שגודל השאילתה קבוע ורק גודל הנתונים משתנה מקלט אחד לשני
4
ארכיטקטורה של אופטימייזרOptimizer Architecture
Algebraic Space
Method-StructureSpace
Cost Model
Size-DistributionEstimator
Planner
Rewriter
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, floorfrom emp, deptwhere emp.dno=dept.dno and sal>100K
9
עצים 3name, floor
⋈ dno=dno
sal>100K
EMP
DEPT
name, floor
⋈ dno=dno
sal>100K
EMP DEPT
name, floor
⋈ dno=dno
sal>100K
EMP
DEPT
dno, floor
name,sal,dno
dno, name
T1 T2 T3
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, balancefrom emp, dept, acntwhere emp.dno=dept.dno and
dept.ano = acnt.ano
14
עצים3
⋈ ano=ano
EMP DEPT
T1 T2 T3
⋈ dno=dno ACNT
⋈ ano=ano,
dno=dno
EMP ACNT
⋈ ACNT
⋈ dno=dno
ACNT DEPT
⋈ ano=ano EMP
באיזה עצים יש מכפלה
קרטזית?
15
על המרחב האלגברי3מגבלה
outer (החיצוניבפעולת צירוף, היחס השמאלי הנו •relation (הפנימי ) והיחס הימני הנוinner relation מינוח – (
block & index nested-loops joinsזה מתאים לשיטות של היחס הפנימי הנו יחס מבסיס הנתונים ולא : 3מגבלה •
תוצאת בינייםדוגמה:•
select name, floor, balancefrom emp, dept, acnt, bankwhere emp.dno=dept.dno and dept.ano=acnt.ano
and acnt.bno = bank.bno
16
עצים 3
⋈ ano=ano
EMP DEPT
T1 T2 T3
⋈ dno=dno ACNT
⋈ ano=ano
EMP DEPT
⋈ dno=dno
ACNT
איזה עצים מקיימים?3 מגבלה
⋈ bno=bno
BANK
BANK
⋈ bno=bno
⋈ ano=ano
EMPDEPT
⋈ dno=dno
ACNT
⋈ bno=bno
BANK
17
מרחב אלגברי – סיכום
בודקים תוכניות חישוב שבהן •פעולות בחירה והטלה מבוצעות מוקדם ככל האפשר 1.
וכחלק מפעולות אחרותפעולות בחירה מבוצעות תוך כדי קריאת יחסי בסיס–פעולות הטלה משולבות יחד עם פעולות בחירה, או –מבוצעות תוך כדי יצירת תוצאות ביניים של פעולות צירוף או –
תוך כדי קריאת יחסי בסיס
לא מבצעים מכפלה קרטזית2.
היחס הפנימי בפעולת צירוף הוא תמיד יחס מבסיס 3.הנתונים
18
)Plannerהמתכנן (
משתמשים בתכנות דינמי כדי למצוא את הסדר הזול • יחסיםNביותר של ביצוע צירוף של
אינטואיציה:•, הערך r, מצא את כל הדרכים האפשריות לקריאת rלכל יחס בסיס –
את המחיר של כל אחת מהדרכים הללו ובחר בדרך הזולה ביותרלכל זוג יחסים, מצא את כל הדרכים האפשריות לביצוע צירוף של –
שני היחסים, תוך שימוש בדרכים הזולות ביותר שנמצאו בשלב הקודם לקריאת היחסים הללו, ובחר בדרך הזולה ביותר
יחסים, מצא את הדרך הזולה ביותר להרחיבו k-1לכל צירוף של –r היחסים הללו ועוד יחס אחד נוסף k-1לצירוף של
יחסים, בחר בדרך הזולה Nבהינתן כל הדרכים לביצוע צירוף של –ביותר
למעשה שומרים בכל שלב לא רק את התוכנית הזולה ביותר, אלא את )פרטים בהמשך(סדר מעניין התוכנית הזולה ביותר לכל
19
הזרמת התוצאה בחלקים)Pipelining Joinsלצירוף הבא (
נניח שצריך לחשב את הביטוי•
)Emp ⋈ Dept (⋈ Acnt Emp ⋈ Deptבעקרון, צריך לחשב את הצירוף •
ובמהלך החישוב לכתוב את התוצאה לדיסק בגמר החישוב, צריך לקרוא את התוצאה מהדיסק •
Acntולחשב את הצירוף שלה עם היחס block & index nested-loops joinsבשיטות של •
אפשר לוותר על כתיבת תוצאת הביניים לדיסק
20
Pipelining Joins - Example
Read block from Emp
Find matching Dept tuples using index
Find matching Acnt tuples using index
Write final output
1
2 3
4
Emp blocks
Dept blocks
Acnt blocks
Output blocks Buffer
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)(רוצים לחשב: •
אינו היעיל S ו- R של sort-merge joinיתכן ש- •Bביותר, אבל הוא מייצר תוצאה שממוינת על
, אז הצירוף של התוצאה B ממוין על Tאם גם •) זול sort-merge join (בשיטת ה- Tהנ"ל עם
עד כדי כך, שהמחיר הכולל הוא הזול ביותר
24
סדר מעניין Interesting Orders
כאמור, יש שיטות שבהן המחיר קטן יותר אם היחסים (או •אחד מהם) הנם ממוינים מראש על האטריביוטים של
)sort-merge joinהצירוף (למשל, בשיטה של יחסים) שבהן kלכן, חשוב לייצר תוכניות (עבור צירוף של •
התוצאה ממוינת על אטריביוטים המשתתפים בפעולת צירוף מאוחרת יותר
) שומרים את התוכנית interesting orderלכל סדר מעניין (•הזולה ביותר
אם התוכנית הזולה ביותר (מתוך כלל התוכניות) הנה ללא •סדר, אז שומרים גם אותה
25
דוגמה
רוצים לחשב את השאילתה•select name, mgrfrom emp, deptwhere 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
Relation 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
200
מה שומרים לשלב הבא?
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 RelationsJoin 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
•Sort the dept tuples resulting from accessing the hashing index on dept.floor into L2•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
• 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
SELECT attribute-list
FROM relation-list
WHERE term1 and ... and termn
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