חישוב של אופרטורים רלציוניים
DESCRIPTION
חישוב של אופרטורים רלציוניים. Evaluation of Relational Operators. חישוב יעיל של שאילתות. שאילתות מתורגמות לביטוי אלגברי שאותו יש לחשב נדרש: חישוב יעיל של כל אופרטור בביטוי תוכנית ביצוע יעילה לחישוב הביטוי. יחסים לדוגמאות. נתונים שני יחסים - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: חישוב של אופרטורים רלציוניים](https://reader036.vdocuments.mx/reader036/viewer/2022062408/56813a64550346895da25da0/html5/thumbnails/1.jpg)
1
חישוב של אופרטורים רלציוניים
Evaluation of Relational Operators
![Page 2: חישוב של אופרטורים רלציוניים](https://reader036.vdocuments.mx/reader036/viewer/2022062408/56813a64550346895da25da0/html5/thumbnails/2.jpg)
2
שאילתות של יעיל חישוב
שאילתות מתורגמות לביטוי אלגברי •שאותו יש לחשב
נדרש:•חישוב יעיל של כל אופרטור בביטוי•תוכנית ביצוע יעילה לחישוב הביטוי •
![Page 3: חישוב של אופרטורים רלציוניים](https://reader036.vdocuments.mx/reader036/viewer/2022062408/56813a64550346895da25da0/html5/thumbnails/3.jpg)
3
לדוגמאות יחסיםנתונים שני יחסים•
Sailors(sid:integer, sname:string, rating:integer, age:real)Reserves(sid:integer, bid:integer, day:dates, rname:string)
Reservesרשומת • בתים, 40באורך • רשומות בדף 100• דפים1000ב-•
Sailorsרשומת • בתים, 50באורך • רשומות בדף 80• דפים500ב-•
![Page 4: חישוב של אופרטורים רלציוניים](https://reader036.vdocuments.mx/reader036/viewer/2022062408/56813a64550346895da25da0/html5/thumbnails/4.jpg)
4
בחירה פעולת חישוב
A op c(R) רוצים לחשב ביטויים מהצורה:•R אטריביוט של Aכאשר ••op= ,> הוא אופרטור כגון •cהוא קבוע
לדוגמא, רוצים לחשב את השאילתה •* SELECTהבאה
FROM Reserves R
WHERE R.agent = ‘Joe’
![Page 5: חישוב של אופרטורים רלציוניים](https://reader036.vdocuments.mx/reader036/viewer/2022062408/56813a64550346895da25da0/html5/thumbnails/5.jpg)
5
, סדר אין אינדקס אין
ניתן לבצע את החישוב על ידי סריקה של •היחס
דפים נדרש מחיר של Mאם ביחס יש • דפיםMקריאת
בדוגמא מהשקף הקודם, המחיר הוא • דפים1000קריאת
![Page 6: חישוב של אופרטורים רלציוניים](https://reader036.vdocuments.mx/reader036/viewer/2022062408/56813a64550346895da25da0/html5/thumbnails/6.jpg)
6
, סדר יש אינדקס אין
ניתןA ממויין לפי אטריביוט Rאם היחס • למצוא את הרשומה הראשונה שמקיימת את •
התנאי על ידי חיפוש בינארילהמשיך כל עוד הרשומות מקיימות את התנאי•
המחיר:• log(M) + #pages with tuples from the result
![Page 7: חישוב של אופרטורים רלציוניים](https://reader036.vdocuments.mx/reader036/viewer/2022062408/56813a64550346895da25da0/html5/thumbnails/7.jpg)
7
+Bשימוש באינדקס מבוסס עץ
R של Aנניח שקיים אינדקס על עמודה •+Bהממומש כעץ
מוצאים כניסה ראשונה בעץ שתואמן את •תנאי החיפוש
ממשיכים לסרוק את העץ כל עוד הערכים •מקיימים את תנאי החיפוש
מביאים את הרשומות המתאימות מהקובץ•
![Page 8: חישוב של אופרטורים רלציוניים](https://reader036.vdocuments.mx/reader036/viewer/2022062408/56813a64550346895da25da0/html5/thumbnails/8.jpg)
8
דוגמה
על ’rname<‘Cמבצעים בחירה עם התנאי •Reserves
בהנחת התפלגות אחידה נקבל• 2/26 10% 10,000 tuples = 100 pages
גישות 100אם האינדקס מקבץ, נדרשות •לדיסק להבאת הנתונים )+גישות לקריאת
האינדקס( 10000אם האינדקס אינו מקבץ ידרשו עם •
גישות לדיסק
![Page 9: חישוב של אופרטורים רלציוניים](https://reader036.vdocuments.mx/reader036/viewer/2022062408/56813a64550346895da25da0/html5/thumbnails/9.jpg)
9
שימוש באינדקס מבוסס ערבול (Hashלתנאי השוואה )
גישות לדיסק2-1מציאת הדלי המתאים כ •הבאת הבלוקים המתאימים לרשומות• rnameאם יש אינדקס ערבול לא מקבץ על •
הזמנות שנעשו על ידי 100 ויש Reservesב-Joe אז בחירה לפי תנאי rname=‘Joe’
גישות לדיסק )במה זה 102 ל-1תדרוש בין תלוי?(
![Page 10: חישוב של אופרטורים רלציוניים](https://reader036.vdocuments.mx/reader036/viewer/2022062408/56813a64550346895da25da0/html5/thumbnails/10.jpg)
10
הטלה פעולת
חישוב הטלה דורש מעבר על הקובץ•הורדת אטריביוטים לא רצויים•הורדת כפילויות•
הורדת כפילויות על ידי •שימוש במיון•(hashingשימוש בערבול )•
שימוש באינדקס במקרה של הטלה על •עמודות שכולן נכללות במפתח החיפוש של
אינדקס
![Page 11: חישוב של אופרטורים רלציוניים](https://reader036.vdocuments.mx/reader036/viewer/2022062408/56813a64550346895da25da0/html5/thumbnails/11.jpg)
11
צירוף לחישוב שיטות
![Page 12: חישוב של אופרטורים רלציוניים](https://reader036.vdocuments.mx/reader036/viewer/2022062408/56813a64550346895da25da0/html5/thumbnails/12.jpg)
12
דוגמה
מעוניינים לחשב את השאילתה הבאה•
SELECT *
FROM Reserves R, Sailors S
WHERE R.sid = S.sid
![Page 13: חישוב של אופרטורים רלציוניים](https://reader036.vdocuments.mx/reader036/viewer/2022062408/56813a64550346895da25da0/html5/thumbnails/13.jpg)
13
נאיבית חישוב שיטת
• Simple Nested Loop Join
foreach tuple r of of R do
foreach tuple s of S do
if ri == rj then
add <r,s> to result
![Page 14: חישוב של אופרטורים רלציוניים](https://reader036.vdocuments.mx/reader036/viewer/2022062408/56813a64550346895da25da0/html5/thumbnails/14.jpg)
14
עלות הערכת
pR ונניח S בלוקים ב-N ו-R בלוקים ב-Mנניח •S רשומות לבלוק ב-pS ו-Rרשומות לבלוק ב-
M + pR*M*Nעלות החישוב: •
בדוגמה של השייטים:• 1,000 + 100*1,000*500 = 1,000 + 5*107 I/Os
זמן קריאת בלוק מהדיסק 10msבהנחה של • שעות לביצוע החישוב!140יידרשו כ-
![Page 15: חישוב של אופרטורים רלציוניים](https://reader036.vdocuments.mx/reader036/viewer/2022062408/56813a64550346895da25da0/html5/thumbnails/15.jpg)
15
לחישוב עיקריות שיטותיחסים שני של הצירוף
צירוף היא הפעולה האלגברית היקרה •ביותר וקיימות עבורה מספר שיטות חישוב
שונות:•Block Nested-Loops Join•Index Nested-Loops Join•Sort-Merge Join•Hash-Join
להלן, נתאר את כל אחת מארבעת •השיטות האלו
![Page 16: חישוב של אופרטורים רלציוניים](https://reader036.vdocuments.mx/reader036/viewer/2022062408/56813a64550346895da25da0/html5/thumbnails/16.jpg)
16
שיטות לחישוב צירוף שלR(A,B) עם S(B,C)
Rאם יש מספיק זיכרון, קרא את •בשלמותו לזיכרון
, קרא את הבלוק Sלכל בלוק של •לזיכרון וחשב את הצירוף של
הרשומות מבלוק זה עם כל הרשומות Rשל
כתוב תוצאה לדיסק וקרא הבלוק •Sהבא של
![Page 17: חישוב של אופרטורים רלציוניים](https://reader036.vdocuments.mx/reader036/viewer/2022062408/56813a64550346895da25da0/html5/thumbnails/17.jpg)
17
הנדרשת הזיכרון כמות
שני • מבין הקטן של הבלוקים מספר2היחסים +
השני • היחס לקריאת אחד בלוקהתוצאה • לכתיבת שני בלוק
• , לדיסק אותו כותבים מתמלא כשהואמחדש למלאו ומתחילים
![Page 18: חישוב של אופרטורים רלציוניים](https://reader036.vdocuments.mx/reader036/viewer/2022062408/56813a64550346895da25da0/html5/thumbnails/18.jpg)
18
כולל חישוב זמן
•BR -בלוקים ב R -ו BS -בלוקים ב S נקרא פעם אחתS ו- Rכל בלוק של •כל בלוק של התוצאה נכתב פעם אחת•BR + BS + output size :זמן כולל•נתעלם מהזמן הדרוש לכתיבת התוצאה, •
כי הוא זהה בכל השיטות BR + BSלכן הזמן הוא •
![Page 19: חישוב של אופרטורים רלציוניים](https://reader036.vdocuments.mx/reader036/viewer/2022062408/56813a64550346895da25da0/html5/thumbnails/19.jpg)
19
משני אחד כל אם עושים מה? הפנימי מהזיכרון גדול היחסים
בלוקים Bבזיכרון הפנימי יש • בלוקיםB-2 בחלקים – כל פעם Rקרא את •, בלוק S, קוראים את כל Rעבור כל חלק של •
אחד בכל פעם עם Sחשב את הצירוף של הרשומות מהבלוק של •
שנמצא בזיכרוןRהרשומות מהחלק של איטרציות שבהן קוראים את כל ceil(BR /(B-2))יש •
S -בעוד ש ,Rנקרא פעם אחת BR + BS * ceil(BR /(B-2))הזמן הנדרש הוא •
![Page 20: חישוב של אופרטורים רלציוניים](https://reader036.vdocuments.mx/reader036/viewer/2022062408/56813a64550346895da25da0/html5/thumbnails/20.jpg)
20
הערה
BR + BS * ceil(BR /(B-2))הזמן הוא •
האם עדיף שבלולאה החיצונית יהיה •היחס הקטן או היחס הגדול?
תשובה: היחס הקטן )מדוע?(•
![Page 21: חישוב של אופרטורים רלציוניים](https://reader036.vdocuments.mx/reader036/viewer/2022062408/56813a64550346895da25da0/html5/thumbnails/21.jpg)
21
Block Nested Loops Join
• Suppose there are B buffer pages
foreach block of B-2 pages of R do
foreach page of S do {
for all matching in-memory
pairs r, s:
add <r,s> to result
}
![Page 22: חישוב של אופרטורים רלציוניים](https://reader036.vdocuments.mx/reader036/viewer/2022062408/56813a64550346895da25da0/html5/thumbnails/22.jpg)
22
עלות הערכת blocked nested loop joinמשתמשים ב-•
לחישוב הצירוף מהדוגמה הקודמת תוך מקומות לדפים בזיכרון 102שימוש ב-
ביחס החיצוני Reservesבהנחה ש-•, Reserves גישות לקריאת 1,000נדרשות • מעבר על Reserves בלוקים של 100לכל •
Sailors מעברים על היחס 10, לכן Sailors בלוקים500כל אחד של קריאת
I/Os 6,000 = 500*10 + 1,000סך הכל •
![Page 23: חישוב של אופרטורים רלציוניים](https://reader036.vdocuments.mx/reader036/viewer/2022062408/56813a64550346895da25da0/html5/thumbnails/23.jpg)
23
עלות הערכת
בלולאה החיצונית נדרשוReservesכאשר •1,000 + (1,000/100)*500 = 6,000 I/Os
בלולאה החיצונית יידרשוSailorsכאשר •500 + (500/100)*1,000 = 5,500 I/Os
לקריאת בלוק תידרש קצת 10msבהנחת •יותר מדקה לחישוב הצירוף!
![Page 24: חישוב של אופרטורים רלציוניים](https://reader036.vdocuments.mx/reader036/viewer/2022062408/56813a64550346895da25da0/html5/thumbnails/24.jpg)
24
Index Nested Loops Join
Sנניח שיש אינדקס על אטריביוט של •R עם Sשמשמש לצירוף של
למציאת הרשומות משתמשים באינדקס•המתאימות!
foreach tuple r of R
foreach tuple s of S where ri=sj
add <r,s> to result
![Page 25: חישוב של אופרטורים רלציוניים](https://reader036.vdocuments.mx/reader036/viewer/2022062408/56813a64550346895da25da0/html5/thumbnails/25.jpg)
25
אינדקס בעזרת צירוף חישוב
S(B,C) עם R(A,B)חישוב צירוף של •:S של Bכאשר יש אינדקס על עמודה
ולכל רשומה מהבלוקRקרא בלוק של •מצא בעזרת האינדקס את כל •
Sהרשומות המתאימות של פעם אחת בלבדRהערה: קוראים את •
![Page 26: חישוב של אופרטורים רלציוניים](https://reader036.vdocuments.mx/reader036/viewer/2022062408/56813a64550346895da25da0/html5/thumbnails/26.jpg)
26
עלות הערכת
את X, נסמן ע"י Rבהינתן רשומה של •הזמן הנדרש כדי למצוא את כל
Sהרשומות המתאימות של
מס' BR + tRX( tRהזמן הכולל •(Rהרשומות ב-
![Page 27: חישוב של אופרטורים רלציוניים](https://reader036.vdocuments.mx/reader036/viewer/2022062408/56813a64550346895da25da0/html5/thumbnails/27.jpg)
27
?Xמהו
נניח שהאינדקס מכיל נתוני כניסה מהצורה•(k, rid)
עדיין kגם אם יש הרבה נתוני כניסה עם אותו •bסביר להניח שכולם על בלוק אחד, שיקרא
1.2באינדקס ערבול צריך, בממוצע, לקרוא •bבלוקים כדי להגיע לבלוק
4-2, צריך לקרוא +Bבאינדקס, שהוא עץ •bבלוקים כדי להגיע לבלוק
![Page 28: חישוב של אופרטורים רלציוניים](https://reader036.vdocuments.mx/reader036/viewer/2022062408/56813a64550346895da25da0/html5/thumbnails/28.jpg)
28
Xהמשך החישוב של
Sצריך לקרוא גם את הרשומות עצמן מהיחס •אם האינדקס מקבץ, אפשר להניח )שבדר"כ( •
ולכןSכולן על בלוק אחד של Sצריך לקרוא בלוק אחד של •
אם האינדקס אינו מקבץ, אז כל רשומה מתאימה • נמצאת על בלוק נפרד, ומספר הבלוקים Sשל Sלמספר הרשומות של שצריך לקרוא שווה Sשל
)נתאר בהמשך Rשמתאימות לרשומה אחת של איך להעריך מספר זה(
![Page 29: חישוב של אופרטורים רלציוניים](https://reader036.vdocuments.mx/reader036/viewer/2022062408/56813a64550346895da25da0/html5/thumbnails/29.jpg)
29
לדוגמה
אם מדובר באינדקס ערבול מקבץ, • והזמן הכולל הואX=2.2אז
BR + 2.2tR
בשיטה BR + BS * ceil(BR / (B-2))לעומת • Block Nested-Loops Joinשל
![Page 30: חישוב של אופרטורים רלציוניים](https://reader036.vdocuments.mx/reader036/viewer/2022062408/56813a64550346895da25da0/html5/thumbnails/30.jpg)
30
חישוב דוגמת
Sailors של sidנניח שיש אינדקס ערבול על ••sid מפתח של Sailors אז יש לכל רשומת Reserves
)למעשה, Sailorsלפחות רשומה מתאימה אחת מ-בדיוק אחת – למה?(
בלוקים1,000 דורשת קריאת Reservesסריקת • רשומות ביחס 100,000 = 1,000*100יש •
Reservesלכל רשומה החיפוש באינדקס דורש לקרוא •
בלוקים 1.2בממוצע
![Page 31: חישוב של אופרטורים רלציוניים](https://reader036.vdocuments.mx/reader036/viewer/2022062408/56813a64550346895da25da0/html5/thumbnails/31.jpg)
31
דוגמה המשך
סך העלות הנדרשת:•1,000 + 100,000 * 2.2 = 221,000 I/Os
סך הזמן הנדרש בהנחת קריאת בלוק ב- •10ms-דקות35 הוא כ
![Page 32: חישוב של אופרטורים רלציוניים](https://reader036.vdocuments.mx/reader036/viewer/2022062408/56813a64550346895da25da0/html5/thumbnails/32.jpg)
32
דוגמה המשך
Reserves של sidנניח שיש אינדקס ערבול על • בלוקים500 דורשת קריאת Sailorsסריקת •Sailors רשומות ב-40,000 = 500*80יש • שייטים – 40,000 הזמנות ל-100,000יש •
הזמנות לשייט2.5בהנחת התפלגות אחידה: בהנחה שהאינדקס אינו מקבץ:•
500 + 40,000*(1.2 + 2.5) = 148,500 I/Os דקות(25)החישוב ידרוש כ-•
![Page 33: חישוב של אופרטורים רלציוניים](https://reader036.vdocuments.mx/reader036/viewer/2022062408/56813a64550346895da25da0/html5/thumbnails/33.jpg)
33
Sort-Merge Join
ע"י S(B,C) עם R(A,B)חישוב צירוף של •Sort-Merge Join:
ואז ממזגים:Bממיינים כ"א מהיחסים על •R.B >= S.B עד ש- Rעוברים על •S.B >= R.B עד ש- Sעוברים על •חוזרים על שני הצעדים הקודמים עד ש- •
R.B = S.B ואז קוראים לזיכרון את כל , B ששווים על S וכל החלק של Rהחלק של
ומחשבים את הצירוף בין שני חלקים אלה
![Page 34: חישוב של אופרטורים רלציוניים](https://reader036.vdocuments.mx/reader036/viewer/2022062408/56813a64550346895da25da0/html5/thumbnails/34.jpg)
34
sidsnameratingage
22dustin745
28yuppy935
31lubber855
36lubber636
44guppy535
58rusty1035sidbiddayagent
2810312/4/96Joe
2810311/3/96Frank
3110110/2/96Joe
3110212/7/96Sam
3110113/7/96Sam
5810322/6/96Frank
Reserves
Sailors
![Page 35: חישוב של אופרטורים רלציוניים](https://reader036.vdocuments.mx/reader036/viewer/2022062408/56813a64550346895da25da0/html5/thumbnails/35.jpg)
35
זמן החישוב של צירוף ע"י Sort-Merge Join
זמן למיון:• BRlogBR + BSlogBS
זמן למיזוג )תחת איזה הנחה?(• BR + BS
סה"כ:• BR + BS + BRlogBR + BSlogBS
![Page 36: חישוב של אופרטורים רלציוניים](https://reader036.vdocuments.mx/reader036/viewer/2022062408/56813a64550346895da25da0/html5/thumbnails/36.jpg)
36
דוגמה
דורשReservesמיון •1000 log 1000 10,000 I/Os
דורשSailorsמיון •500 log 500 4,500 I/Os
I/Os 1,500 = 500 + 1,000צירוף: • 16,000 = 1,500 + 4,500 + 10,000סה"כ: •
I/Osהזמן שנדרש יהיה פחות משלוש דקות•על ידי שימוש בשיטות מיון טובות, ניתן להקטין את •
עלות החישוב לפחות מחצי העלות המחושבת כאן
![Page 37: חישוב של אופרטורים רלציוניים](https://reader036.vdocuments.mx/reader036/viewer/2022062408/56813a64550346895da25da0/html5/thumbnails/37.jpg)
37
Hash-Join
חלקים B-1מבצעים חלוקה של שני יחסי הקלט ל-•על ידי הפעלת פונקצית ערבול על הערכים
באטריביוטים שלפיהם נעשה הצירוף יכולות i שמופו לקבוצה Rעל פי החלוקה, רשומות של •
i שאף הן מופו ל-Sלהתחבר רק לרשומות של
בזו אחר זו וכל Rקוראים את קבוצות החלוקה של •קבוצה מחלקים לתת קבוצות )שנשמרות בזיכרון
שונה הראשי( בעזרת פונקצית ערבול חדשה )!(מהראשונה
קוראים את הקבוצה Rלכל קבוצת חלוקה של • ומנסים למצוא התאמות Sהמתאימה של
![Page 38: חישוב של אופרטורים רלציוניים](https://reader036.vdocuments.mx/reader036/viewer/2022062408/56813a64550346895da25da0/html5/thumbnails/38.jpg)
38
Hash-Join
//Partition R into k partitionsforeach tuple r in R do //flush when fills
read r and add it to buffer page h(ri)foreach tuple s in S do //flush when fills
read s and add it to buffer page h(sj)
for l = 1..k
//Build in-memory hash table for Rl using h2
foreach tuple r in Rl doread r and insert into hash table with h2
foreach tuple s in Sl doread s and probe table using h2output matching pairs <r,s>
![Page 39: חישוב של אופרטורים רלציוניים](https://reader036.vdocuments.mx/reader036/viewer/2022062408/56813a64550346895da25da0/html5/thumbnails/39.jpg)
39
Hash-Join
• Partition both relations using hash fn h: R tuples in partition i will only match S tuples in partition i
• Read in a partition of R, hash it using h2 (<> h!). Scan matching partition of S, search for matches
Partitionsof R & S
Input bufferfor Si
Hash table for partitionRi (k < B-1 pages)
B main memory buffersDisk
Output buffer
Disk
Join Result
hashfnh2
h2
B main memory buffers DiskDisk
Original Relation OUTPUT
2INPUT
1
hashfunction
h B-1
Partitions
1
2
B-1
. . .
![Page 40: חישוב של אופרטורים רלציוניים](https://reader036.vdocuments.mx/reader036/viewer/2022062408/56813a64550346895da25da0/html5/thumbnails/40.jpg)
40
B main memory blocks DiskDisk
Original Relation OUTPUT
2INPUT
1
hashfunction
h B-1
Partitions
1
2
B-1
. . .
Partition R & S using h
![Page 41: חישוב של אופרטורים רלציוניים](https://reader036.vdocuments.mx/reader036/viewer/2022062408/56813a64550346895da25da0/html5/thumbnails/41.jpg)
41
Partitionsof R & S
Input bufferfor Si
Hash table for partitionRi (k < B-1 pages)
B main memory blocksDisk
Output buffer
Disk
Join Result
hashfnh2
h2
Read partition Ri & partition it using h2
Partition Si is joined with Ri
![Page 42: חישוב של אופרטורים רלציוניים](https://reader036.vdocuments.mx/reader036/viewer/2022062408/56813a64550346895da25da0/html5/thumbnails/42.jpg)
42
Hash Joinהמחיר של
אם יש מספיק מקום בזיכרון וה- •Partitions הן פחות או יותר בגודל שווה, אז
בשלב הראשון קוראים וכותבים כל יחס •פעם אחת בלבד
ובשלב השני קוראים כל יחס פעם אחת•
(BR + BS)3לכן המחיר הכולל הוא •
![Page 43: חישוב של אופרטורים רלציוניים](https://reader036.vdocuments.mx/reader036/viewer/2022062408/56813a64550346895da25da0/html5/thumbnails/43.jpg)
43
השייטים בדוגמת
Reserves בלוקים של 1,000עבור • יידרשוSailors בלוקים של 500ו-
3(1,000 + 500 = )4,500 I/Os
45במקרה זה, לביצוע הצירוף יידרשו כ-•שניות
![Page 44: חישוב של אופרטורים רלציוניים](https://reader036.vdocuments.mx/reader036/viewer/2022062408/56813a64550346895da25da0/html5/thumbnails/44.jpg)
44
כמות הזיכרון הנדרשת לביצוע Hash Join
בלוקים בזיכרון אז מספר Bאם יש •k=B-1 הוא לכל היותר Partitionsה-
הואPartitionלכן הגודל של כל •בלוקים לכל לכן צריך בשלב השני•
Partition כאשר ,f הוא מקדם גדול מלאים100%, כי הדליים אינם 1מ-
1B
BR
1B
fBR
![Page 45: חישוב של אופרטורים רלציוניים](https://reader036.vdocuments.mx/reader036/viewer/2022062408/56813a64550346895da25da0/html5/thumbnails/45.jpg)
45
המשך חישוב כמות הזיכרון Hash Joinהנדרשת לביצוע
בלוקיםכאמור, בשלב השני צריך• בלוקים וצריך גם אחד Bיש בסך הכל •
לכתיבת התוצאה ואחד לקריאת היחס השני, ולכן
R בלוקים, כאשר לפיכך, צריך •היחס הקטן יותר
21
B
fBB R
1B
fBR
RfBB
לא בגודל Partitionsלמעשה צריך קצת יותר, כי ה- שווה
![Page 46: חישוב של אופרטורים רלציוניים](https://reader036.vdocuments.mx/reader036/viewer/2022062408/56813a64550346895da25da0/html5/thumbnails/46.jpg)
46
שיטה משופרת ל-Sort-Merge Join (SMJ)
שלוקחת SMJ -יש שיטה משופרת ל•hash join: 3(BR + BS)אותו זמן כמו
בלוקים שיטה זאת דורשת • הוא הגדול משני Sבזיכרון, כאשר
(12היחסים )פרטים בפרק •SMJ מייצרת תוצאה ממוינת וזמן
worst caseהחישוב הוא
sBB
![Page 47: חישוב של אופרטורים רלציוניים](https://reader036.vdocuments.mx/reader036/viewer/2022062408/56813a64550346895da25da0/html5/thumbnails/47.jpg)
47
כה עד סיכום
צירוף • לחישוב שונות שיטות ראינויחסים שני של
החישוב • זמן עבור נוסחה שיטה לכלטובה • הכי תמיד שהיא שיטה אין