1 חישוב של אופרטורים רלציוניים Evaluation of Relational Operators.

Slides:



Advertisements
Similar presentations
Completeness and Expressiveness. תזכורת למערכת ההוכחה של לוגיקה מסדר ראשון : אקסיומות 1. ) ) (( 2. )) ) (( )) ( ) ((( 3. ))) F( F( ( 4. ) v) ( ) v ((
Advertisements

A. Frank File Organization Indexed-Sequential File Measurements Thanks to Tamar Barnes.
Presentation by Dudu Yanay and Elior Malul 1.  מה משותף לכל אלגוריתם המשתמש ב -Bucket Elimination: ◦ נתון מודל הסתברותי ורשת ביסיאנית מתאימה. ◦ נתונה.
אופטימיזציה של שאילתות
1 חישוב של אופרטורים רלציוניים Evaluation of Relational Operators.
רקורסיות נושאי השיעור פתרון משוואות רקורסיביות שיטת ההצבה
מסדי נתונים תשס " ג 1 תכנון סכמות (Design Theory) מסדי נתונים.
תרגול 8 עצי B+ אינדקס משני.
A. Frank File Organization קובץ ישיר מתקדם Advanced Direct File.
SPRING 2004CENG 3521 Join Algorithms Chapter 14. SPRING 2004CENG 3522 Schema for Examples Similar to old schema; rname added for variations. Reserves:
שאלות חזרה לבחינה. שאלה דיסקים אופטיים מסוג WORM (write-once-read-many) משמשים חברות לצורך איחסון כמויות גדולות של מידע באופן קבוע ומבלי שניתן לשנותו.
חורף - תשס " ג DBMS, צורות נורמליות 1 צורה נורמלית שלישית - 3NF הגדרה : תהי R סכמה רלציונית ותהי F קבוצת תלויות פונקציונליות מעל R. R היא ב -3NF.
Map-Reduce Input: a collection of scientific articles on different topics, each marked with a field of science –Mathematics, Computer Science, Biology,
1 Optimization Recap and examples. 2 Optimization introduction For every SQL expression, there are many possible ways of implementation. The different.
A. Frank File Organization Indexed-Sequential File Introduction Thanks to Tamar Barnes.
A. Frank File Organization Sequential File Measures.
בהסתברות לפחות למצא בעיה במודל PAC עבור בהסתברות ε הפונקציה f טועה מודל ONLINE 1. אחרי כל טעות הפונקציה משתפרת 2. מספר הטעיות קטן.
מסדי נתונים תשס " ג 1 תכנון סכמות – אלגוריתם פירוק לתבניות בצורת BCNF מסדי נתונים.
חישוב ואופטימיזציה של שאילתות חלק 1
תורת הקבוצות חלק ב'. קבוצה בת מניה הגדרה: קבוצה אינסופית X היא ניתנת למניה אם יש התאמה חד-חד ערכית בין X לבין .
תכנות תרגול 6 שבוע : תרגיל שורש של מספר מחושב לפי הסדרה הבאה : root 0 = 1 root n = root n-1 + a / root n-1 2 כאשר האיבר ה n של הסדרה הוא קירוב.
1 חישוב ואופטימיזציה של שאילתות חלק 2 Query Evaluation and Optimization Part 2.
קובץ רב-אינדקס Multi-Indexed File
ערמות ; מבני נתונים 09 מבוסס על מצגות של ליאור שפירא, חיים קפלן, דני פלדמן וחברים.
מערכות הפעלה ( אביב 2009) חגית עטיה ©1 מערכת קבצים log-structured  ה log הוא העותק היחיד של הנתונים  כאשר משנים בלוק (data, header) פשוט כותבים את הבלוק.
מודל ONLINE לומדמורה 1. כל ניתן לחישוב בזמן פולינומיאלי 2. אחרי מספר פולינומיאלי של טעיות ( ) הלומד לא טועה ז"א שווה ל- Littlestone 1988.
1 Optimization - Selection. 2 The Selection Operation Table: Reserves(sid, bid, day, agent) A page (block) can hold 100 Reserves tuples There are 1,000.
תרגול 9 אלגברה רלציונית.
תרגול 7 עצי B
ערכים עצמיים בשיטות נומריות. משוואה אופינית X מציין וקטור עצמי מציינת ערך עצמי תואם לוקטור.
A. Frank File Organization Transfer Time/Rate Parameters.
Data Structures, CS, TAU, Perfect Hashing 1 Perfect Hashing בעיה : נתונה קבוצה S של n מפתחות מתחום U השוואה ל - Hash : * טבלה קבועה (Hash רגיל - דינאמי.
Introduction to Database Systems 1 Join Algorithms Query Processing: Lecture 1.
Remember Remember The 5 th of November. תרגול 2 קובץ סדרתי.
1 Data Structures, CS, TAU, Perfect Hashing בעיה: נתונה קבוצה S של n מפתחות מתחום U השוואה ל- Hash : * טבלה קבועה (Hash רגיל - דינאמי) * רוצים זמן קבוע.
מודל הלמידה מדוגמאות Learning from Examples קלט: אוסף של דוגמאות פלט: קונסיסטנטי עם פונקציה f ב- C ז"א קונסיסטנטי עם S ז"א מודל הלמידה מדוגמאות Learning.
עקרון ההכלה וההדחה.
יחס סדר חלקי.
1 חישוב ואופטימיזציה של שאילתות חלק 1 Query Evaluation and Optimization Part 1.
מבוא למדעי המחשב תרגול 3 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
A. Frank File Organization Introduction to Pile File.
מתמטיקה בדידה תרגול 2.
A. Frank File Organization Hardware Size Parameters.
1 מבוא למדעי המחשב סיבוכיות. 2 סיבוכיות - מוטיבציה סידרת פיבונאצ'י: long fibonacci (int n) { if (n == 1 || n == 2) return 1; else return (fibonacci(n-1)
Points on a perimeter (Convex Hull) קורס – מבוא לעבוד מקבילי מבצעים – אריאל פנדלר יאיר ברעם.
- אמיר רובינשטיין מיונים - Sorting משפט : חסם תחתון על מיון ( המבוסס על השוואות בלבד ) של n מפתחות הינו Ω(nlogn) במקרה הגרוע ובממוצע. ניתן לפעמים.
1 ׃1998 Morgan Kaufmann Publishers פקודת ה- jump 4 bits 26 bits 2 bits 00 : כתובת קפיצה במילים : כתובת קפיצה בבתים … …
RELATIONAL JOIN Advanced Data Structures. Equality Joins With One Join Column External Sorting 2 SELECT * FROM Reserves R1, Sailors S1 WHERE R1.sid=S1.sid.
Implementing Natural Joins, R. Ramakrishnan and J. Gehrke with corrections by Christoph F. Eick 1 Implementing Natural Joins.
פיתוח מערכות מידע Class diagrams Aggregation, Composition and Generalization.
Practice session 3 תחביר ממשי ( קונקרטי ) ותחביר מופשט ( אבסטרקטי ) שיטות חישוב : Applicative & Normal Evaluation Partial Evaluation.
Practice session 3.  תחביר ממשי ( קונקרטי ) ותחביר מופשט ( אבסטרקטי )  שיטות חישוב : Applicative & Normal Evaluation.
Data Structures Hanoch Levi and Uri Zwick March 2011 Lecture 3 Dynamic Sets / Dictionaries Binary Search Trees.
2003B Q5 Suppliers(sid, sname, city) Select sid from suppliers where city=‘jerusalem’ or sname like ‘%Smith’ Select sid from suppliers where city=‘jerusalem’
More Optimization Exercises. Block Nested Loops Join Suppose there are B buffer pages Cost: M + ceil (M/(B-2))*N where –M is the number of pages of R.
Implementation of Database Systems, Jarek Gryz1 Evaluation of Relational Operations Chapter 12, Part A.
1 Formal Specifications for Complex Systems (236368) Tutorial #1 Course site:
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Evaluation of Relational Operations Chapter 14, Part A (Joins)
Cost Model and Estimating Result Sizes. מודל המחיר Cost Model בהרצאה הראנו איך לחשב את המחיר של כל שיטה (join) כדי לעשות זאת צריך לדעת את גודל היחסים,
מספרים אקראיים ניתן לייצר מספרים אקראיים ע"י הפונקציה int rand(void);
Formal Specifications for Complex Systems (236368) Tutorial #1
מבוא למדעי המחשב סיבוכיות.
אינדקסינג והשינג (indexing & hashing)
SQL בסיסי – הגדרה אינדוקטיבית
תיאוריית תכנון סכמות למסדי נתונים יחסיים חלק 4
Marina Kogan Sadetsky –
ניתוח זמן ריצה (על קצה המזלג)
Based on the lecture notes of Prof. Sagiv
Computer Programming תרגול 3 Summer 2016
Engineering Programming A
Presentation transcript:

1 חישוב של אופרטורים רלציוניים Evaluation of Relational Operators

2 חישוב יעיל של שאילתות שאילתות מתורגמות לביטוי אלגברי שאותו יש לחשב נדרש : חישוב יעיל של כל אופרטור בביטוי תוכנית ביצוע יעילה לחישוב הביטוי

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 דפים

4 חישוב פעולת בחירה רוצים לחשב ביטויים מהצורה :  A op c (R) כאשר A אטריביוט של R op הוא אופרטור כגון >, = c הוא קבוע לדוגמא, רוצים לחשב את השאילתה הבאה SELECT * FROM Reserves R WHERE R.agent = ‘Joe’

5 אין אינדקס, אין סדר ניתן לבצע את החישוב על ידי סריקה של היחס אם ביחס יש M דפים נדרש מחיר של קריאת M דפים בדוגמא מהשקף הקודם, המחיר הוא קריאת 1000 דפים

6 אין אינדקס, יש סדר אם היחס R ממויין לפי אטריביוט A ניתן למצוא את הרשומה הראשונה שמקיימת את התנאי על ידי חיפוש בינארי להמשיך כל עוד הרשומות מקיימות את התנאי המחיר : log(M) + #pages with tuples from the result

7 שימוש באינדקס מבוסס עץ B+ נניח שקיים אינדקס על עמודה A של R הממומש כעץ B+ מוצאים כניסה ראשונה בעץ שתואמן את תנאי החיפוש ממשיכים לסרוק את העץ כל עוד הערכים מקיימים את תנאי החיפוש מביאים את הרשומות המתאימות מהקובץ

8 דוגמה מבצעים בחירה עם התנאי rname<‘C’ על Reserves בהנחת התפלגות אחידה נקבל 2/26  10%  10,000 tuples = 100 pages אם האינדקס מקבץ, נדרשות 100 גישות לדיסק להבאת הנתונים (+ גישות לקריאת האינדקס ) אם האינדקס אינו מקבץ ידרשו עם גישות לדיסק

9 שימוש באינדקס מבוסס ערבול (Hash) לתנאי השוואה מציאת הדלי המתאים כ 2-1 גישות לדיסק הבאת הבלוקים המתאימים לרשומות אם יש אינדקס ערבול לא מקבץ על rname ב - Reserves ויש 100 הזמנות שנעשו על ידי Joe אז בחירה לפי תנאי rname= ‘ Joe ’ תדרוש בין 1 ל גישות לדיסק ( במה זה תלוי ?)

10 פעולת הטלה חישוב הטלה דורש מעבר על הקובץ הורדת אטריביוטים לא רצויים הורדת כפילויות הורדת כפילויות על ידי שימוש במיון שימוש בערבול (hashing) שימוש באינדקס במקרה של הטלה על עמודות שכולן נכללות במפתח החיפוש של אינדקס

11 שיטות לחישוב צירוף

12 דוגמה מעוניינים לחשב את השאילתה הבאה SELECT * FROM Reserves R, Sailors S WHERE R.sid = S.sid

13 שיטת חישוב נאיבית Simple Nested Loop Join foreach tuple r of of R do foreach tuple s of S do if r i == r j then add to result

14 הערכת עלות נניח M בלוקים ב -R ו -N בלוקים ב -S ונניח p R רשומות לבלוק ב -R ו -p S רשומות לבלוק ב -S עלות החישוב : M + p R *M*N בדוגמה של השייטים : 1, *1,000*500 = 1, *10 7 I/Os בהנחה של 10ms זמן קריאת בלוק מהדיסק יידרשו כ שעות לביצוע החישוב !

15 שיטות עיקריות לחישוב הצירוף של שני יחסים צירוף היא הפעולה האלגברית היקרה ביותר וקיימות עבורה מספר שיטות חישוב שונות : Block Nested-Loops Join Index Nested-Loops Join Sort-Merge Join Hash-Join להלן, נתאר את כל אחת מארבעת השיטות האלו

16 שיטות לחישוב צירוף של R(A,B) עם S(B,C) אם יש מספיק זיכרון, קרא את R בשלמותו לזיכרון לכל בלוק של S, קרא את הבלוק לזיכרון וחשב את הצירוף של הרשומות מבלוק זה עם כל הרשומות של R כתוב תוצאה לדיסק וקרא הבלוק הבא של S

17 כמות הזיכרון הנדרשת מספר הבלוקים של הקטן מבין שני היחסים + 2 בלוק אחד לקריאת היחס השני בלוק שני לכתיבת התוצאה כשהוא מתמלא, כותבים אותו לדיסק ומתחילים למלאו מחדש

18 זמן חישוב כולל B R בלוקים ב - R ו - B S בלוקים ב - S כל בלוק של R ו - S נקרא פעם אחת כל בלוק של התוצאה נכתב פעם אחת זמן כולל : B R + B S + output size נתעלם מהזמן הדרוש לכתיבת התוצאה, כי הוא זהה בכל השיטות לכן הזמן הוא B R + B S

19 מה עושים אם כל אחד משני היחסים גדול מהזיכרון הפנימי ? בזיכרון הפנימי יש B בלוקים קרא את R בחלקים – כל פעם B-2 בלוקים עבור כל חלק של R, קוראים את כל S, בלוק אחד בכל פעם חשב את הצירוף של הרשומות מהבלוק של S עם הרשומות מהחלק של R שנמצא בזיכרון יש ceil(B R /(B-2)) איטרציות שבהן קוראים את כל S, בעוד ש - R נקרא פעם אחת הזמן הנדרש הוא B R + B S * ceil(B R /(B-2))

20 הערה הזמן הוא B R + B S * ceil(B R /(B-2)) האם עדיף שבלולאה החיצונית יהיה היחס הקטן או היחס הגדול ? תשובה : היחס הקטן ( מדוע ?)

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 to result }

22 הערכת עלות משתמשים ב -blocked nested loop join לחישוב הצירוף מהדוגמה הקודמת תוך שימוש ב מקומות לדפים בזיכרון בהנחה ש -Reserves ביחס החיצוני נדרשות 1,000 גישות לקריאת Reserves, לכל 100 בלוקים של Reserves מעבר על Sailors, לכן 10 מעברים על היחס Sailors כל אחד של קריאת 500 בלוקים סך הכל 1, *500 = 6,000 I/Os

23 הערכת עלות כאשר Reserves בלולאה החיצונית נדרשו 1,000 + (1,000/100)*500 = 6,000 I/Os כאשר Sailors בלולאה החיצונית יידרשו (500/100)*1,000 = 5,500 I/Os בהנחת 10ms לקריאת בלוק תידרש קצת יותר מדקה לחישוב הצירוף !

24 Index Nested Loops Join נניח שיש אינדקס על אטריביוט של S שמשמש לצירוף של S עם R משתמשים באינדקס למציאת הרשומות המתאימות ! foreach tuple r of R foreach tuple s of S where r i =s j add to result

25 חישוב צירוף בעזרת אינדקס חישוב צירוף של R(A,B) עם S(B,C) כאשר יש אינדקס על עמודה B של S: קרא בלוק של R ולכל רשומה מהבלוק מצא בעזרת האינדקס את כל הרשומות המתאימות של S הערה : קוראים את R פעם אחת בלבד

26 הערכת עלות בהינתן רשומה של R, נסמן ע " י X את הזמן הנדרש כדי למצוא את כל הרשומות המתאימות של S הזמן הכולל B R + t R X (t R מס ' הרשומות ב - R)

27 מהו X? נניח שהאינדקס מכיל נתוני כניסה מהצורה (k, rid) גם אם יש הרבה נתוני כניסה עם אותו k עדיין סביר להניח שכולם על בלוק אחד, שיקרא b באינדקס ערבול צריך, בממוצע, לקרוא 1.2 בלוקים כדי להגיע לבלוק b באינדקס, שהוא עץ B+, צריך לקרוא 4-2 בלוקים כדי להגיע לבלוק b

28 המשך החישוב של X צריך לקרוא גם את הרשומות עצמן מהיחס S אם האינדקס מקבץ, אפשר להניח ( שבדר " כ ) כולן על בלוק אחד של S ולכן צריך לקרוא בלוק אחד של S אם האינדקס אינו מקבץ, אז כל רשומה מתאימה של S נמצאת על בלוק נפרד, ומספר הבלוקים של S שצריך לקרוא שווה למספר הרשומות של S שמתאימות לרשומה אחת של R ( נתאר בהמשך איך להעריך מספר זה )

29 לדוגמה אם מדובר באינדקס ערבול מקבץ, אז X=2.2 והזמן הכולל הוא B R + 2.2t R לעומת B R + B S * ceil(B R / (B-2)) בשיטה של Block Nested-Loops Join

30 דוגמת חישוב נניח שיש אינדקס ערבול על sid של Sailors sid מפתח של Sailors אז יש לכל רשומת Reserves לפחות רשומה מתאימה אחת מ -Sailors ( למעשה, בדיוק אחת – למה ?) סריקת Reserves דורשת קריאת 1,000 בלוקים יש 100*1,000 = 100,000 רשומות ביחס Reserves לכל רשומה החיפוש באינדקס דורש לקרוא בממוצע 1.2 בלוקים

31 המשך דוגמה סך העלות הנדרשת : 1, ,000 * 2.2 = 221,000 I/Os סך הזמן הנדרש בהנחת קריאת בלוק ב - 10ms הוא כ - 35 דקות

32 המשך דוגמה נניח שיש אינדקס ערבול על sid של Reserves סריקת Sailors דורשת קריאת 500 בלוקים יש 80*500 = 40,000 רשומות ב -Sailors יש 100,000 הזמנות ל - 40,000 שייטים – בהנחת התפלגות אחידה : 2.5 הזמנות לשייט בהנחה שהאינדקס אינו מקבץ : ,000*( ) = 148,500 I/Os ( החישוב ידרוש כ - 25 דקות )

33 Sort-Merge Join חישוב צירוף של R(A,B) עם S(B,C) ע " י Sort-Merge Join: ממיינים כ " א מהיחסים על B ואז ממזגים : עוברים על R עד ש - R.B >= S.B עוברים על S עד ש - S.B >= R.B חוזרים על שני הצעדים הקודמים עד ש - R.B = S.B, ואז קוראים לזיכרון את כל החלק של R וכל החלק של S ששווים על B ומחשבים את הצירוף בין שני חלקים אלה

34 sidsnameratingage 22dustin745 28yuppy935 31lubber855 36lubber636 44guppy535 58rusty1035 sidbiddayagent /4/96Joe /3/96Frank /2/96Joe /7/96Sam /7/96Sam /6/96Frank Reserves Sailors

35 זמן החישוב של צירוף ע " י Sort-Merge Join זמן למיון : B R logB R + B S logB S זמן למיזוג ( תחת איזה הנחה ?) B R + B S סה " כ : B R + B S + B R logB R + B S logB S

36 דוגמה מיון Reserves דורש 1000 log 1000  10,000 I/Os מיון Sailors דורש 500 log 500  4,500 I/Os צירוף : 1, = 1,500 I/Os סה " כ : 10, , ,500 = 16,000 I/Os הזמן שנדרש יהיה פחות משלוש דקות על ידי שימוש בשיטות מיון טובות, ניתן להקטין את עלות החישוב לפחות מחצי העלות המחושבת כאן

37 Hash-Join מבצעים חלוקה של שני יחסי הקלט ל -B-1 חלקים על ידי הפעלת פונקצית ערבול על הערכים באטריביוטים שלפיהם נעשה הצירוף על פי החלוקה, רשומות של R שמופו לקבוצה i יכולות להתחבר רק לרשומות של S שאף הן מופו ל -i קוראים את קבוצות החלוקה של R בזו אחר זו וכל קבוצה מחלקים לתת קבוצות ( שנשמרות בזיכרון הראשי ) בעזרת פונקצית ערבול חדשה ( שונה מהראשונה !) לכל קבוצת חלוקה של R קוראים את הקבוצה המתאימה של S ומנסים למצוא התאמות

38 Hash-Join //Partition R into k partitions foreach tuple r in R do //flush when fills read r and add it to buffer page h(r i ) foreach tuple s in S do //flush when fills read s and add it to buffer page h(s j ) for l = 1..k //Build in-memory hash table for R l using h2 foreach tuple r in R l do read r and insert into hash table with h2 foreach tuple s in S l do read s and probe table using h2 output matching pairs

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 Partitions of R & S Input buffer for Si Hash table for partition Ri (k < B-1 pages) B main memory buffers Disk Output buffer Disk Join Result hash fn h2 B main memory buffers Disk Original Relation OUTPUT 2 INPUT 1 hash function h B-1 Partitions 1 2 B-1...

40 B main memory blocks Disk Original Relation OUTPUT 2 INPUT 1 hash function h B-1 Partitions 1 2 B-1... Partition R & S using h

41 Partitions of R & S Input buffer for Si Hash table for partition Ri (k < B-1 pages) B main memory blocks Disk Output buffer Disk Join Result hash fn h2 Read partition Ri & partition it using h2 Partition Si is joined with Ri

42 המחיר של Hash Join אם יש מספיק מקום בזיכרון וה - Partitions הן פחות או יותר בגודל שווה, אז בשלב הראשון קוראים וכותבים כל יחס פעם אחת בלבד ובשלב השני קוראים כל יחס פעם אחת לכן המחיר הכולל הוא 3(B R + B S )

43 בדוגמת השייטים עבור 1,000 בלוקים של Reserves ו בלוקים של Sailors יידרשו 3(1, ) = 4,500 I/Os במקרה זה, לביצוע הצירוף יידרשו כ - 45 שניות

44 כמות הזיכרון הנדרשת לביצוע Hash Join אם יש B בלוקים בזיכרון אז מספר ה - Partitions הוא לכל היותר k=B-1 לכן הגודל של כל Partition הוא לכן צריך בשלב השניבלוקים לכל Partition, כאשר f הוא מקדם גדול מ - 1, כי הדליים אינם 100% מלאים

45 המשך חישוב כמות הזיכרון הנדרשת לביצוע Hash Join כאמור, בשלב השני צריך בלוקים יש בסך הכל B בלוקים וצריך גם אחד לכתיבת התוצאה ואחד לקריאת היחס השני, ולכן לפיכך, צריך בלוקים, כאשר R היחס הקטן יותר למעשה צריך קצת יותר, כי ה- Partitions לא בגודל שווה

46 שיטה משופרת ל - Sort-Merge Join (SMJ) יש שיטה משופרת ל - SMJ שלוקחת אותו זמן כמו hash join: 3(B R + B S ) שיטה זאת דורשת בלוקים בזיכרון, כאשר S הוא הגדול משני היחסים ( פרטים בפרק 12) SMJ מייצרת תוצאה ממוינת וזמן החישוב הוא worst case

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