תכנון וכוונון מסד הנתונים ( Tuning the Database )

64
סססס סססססס ססס" ס1 ססססס ססססססס ססס ססססססס( Tuning the Database ) סססס סססס סססססס

description

תכנון וכוונון מסד הנתונים ( Tuning the Database ). קורס מסדי נתונים. ייעול פעולת מערכת מסד הנתונים. ניתן לייעל את פעולת מערכת מסד הנתונים על ידי שינוי פרמטרים שונים: גודל ה- buffer pool תדירות ביצוע checkpoints תכנון נכון של מסד הנתונים (טבלאות, אינדקסים). תכנון ( design ). - PowerPoint PPT Presentation

Transcript of תכנון וכוונון מסד הנתונים ( Tuning the Database )

Page 1: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 1

תכנון וכוונון מסד הנתונים( Tuning the Database)

קורס מסדי נתונים

Page 2: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 2

ייעול פעולת מערכת מסד הנתונים

ניתן לייעל את פעולת מערכת מסד •הנתונים על ידי שינוי פרמטרים שונים:

buffer poolגודל ה-–checkpointsתדירות ביצוע –תכנון נכון של מסד הנתונים )טבלאות, –

אינדקסים(

(designתכנון ) (tuningכוונון ) עבודה שוטפת

Page 3: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 3

דרישה ראשונית

נדרשת הבנה של עומס העבודהעל המערכת ואופי השימוש במערכת

נדרשת הבנה של עומס העבודהעל המערכת ואופי השימוש במערכת

פעולות עדכוןפעולות עדכוןשאילתותשאילתות

ריבוי משתמשיםועבודה במקבילריבוי משתמשיםועבודה במקביל

Page 4: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 4

עומס עבודה

רשימת שאילתות והתדירות שלהן ביחס 1.לכלל השאילתות ופעולות העדכון

רשימת פעולות העדכון והתדירות שלהן 2.ביחס לכלל השאילתות ופעולות העדכון

היעילות הנדרשת מכל סוג של שאילתה 3.ושל פעולת עדכון

Page 5: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 5

מידע על שאילתות בעומס העבודה

לאילו יחסים השאילתה ניגשת•אילו אטריביוטים השאילתה מחזירה •

(select)אילו אטריביוטים מופיעים בתנאי בחירה או •

( ועד כמה whereכחלק מתנאי צירוף )התנאי סלקטיבי

Page 6: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 6

מידע על פעולות עדכון בעומס עבודה

(update, insert, deleteסוג פעולת העדכון )•, אילו updateבמקרה של פעולת •

(setאטריביוטים השאילתה משנה )אילו אטריביוטים מופיעים בתנאי בחירה או •

( ועד כמה whereכחלק מתנאי צירוף )התנאי סלקטיבי

Page 7: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 7

החלטות שיש לקבל תוך כדי תכנון וכוונון מסד הנתונים

אילו אינדקסים לייצר•על אילו יחסים ועל אילו שדות ליצור אינדקסים–איזה סוג אינדקס נדרש במקרים השונים )מקבץ/לא מקבץ, –

/על ידי המרה(+Bדליל/צפוף, על ידי עץ

האם לשנות את הסכמה הכללית לצורך שיפור •ביצועים

בחירה בין אלטרנטיבות פירוק שיש להן אותה צורה נורמלית–איחוד סכימות על אף הורדת הצורה הנורמלית–חלוקת אנכית של סכימות–( viewsיצירת הגדרות תצפית )–

שכתוב שאילתות•

Page 8: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 8

קווים מנחים לבחירת אינדקסים

בוחנים את השאילתות החשובות •בוחנים את תוכניות הביצוע של השאילתות•בוחנים את השפעת הוספת האינדקסים על •

ביצוע השאילתות

Page 9: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 9

Oracleיצירת אינדקסים ב-מייצרים אינדקס בעזרת הפקודה:•

ניתן לייצר גם אינדקס מקבץ:•

CREATE [UNIQUE] [BITMAP] INDEX index-name ON table (column [,column]…);

CREATE CLUSTER ReservesCluster (A integer);

CREATE TABLE Reserves (sid INTEGER,bid INTEGER,rdate DATE)

CLUSTER ReservesCluster (sid);

CREATE INDEX ReservesNDX ON CLUSTER ReservesCluster;

Page 10: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 10

קווים מנחים לבחירת אינדקסים

אין צורך )האם לייצר אינדקס(:1קו מנחה •לייצר אינדקס שאף שאילתה או פעולת עדכון לא ירוויחו ממנו. רצוי לייצר אינדקסים באופן שמספר

שאילתות ופעולות עדכון ירוויחו מהם בוחנים )בחירת מפתח חיפוש(:2קו מנחה •

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

לאינדקס על האטריביוט שמופיע בתנאי עם העדפה (hash indexלאינדקס המרה )

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

Page 11: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 11

קווים מנחים לבחירת אינדקסים

אינדקס )מפתח חיפוש מרובה אטריביוטים(:3קו מנחה •שמפתח החיפוש שלו מורכב ממספר אטריביוטים ישמש במקרים

הבאים כולל תנאים על מספר אטריביוטים של יחסwhereתנאי ה-–

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

ניתן לבחור )האם על האינדקס להיות מקבץ(:4קו מנחה •אינדקס יחיד שיהיה האינדקס המקבץ של היחס

תנאי בחירה על טווח ערכים רצוי לבצע עם אינדקס מקבץ–

תנאי של התאמה מדויקת כאשר לכמה רשומות אותו ערך במפתח החיפוש–

אינדקס שנועד לפעולות שיבוצעו על האינדקס במקום על היחס עצמו לא –יהיה מקבץ

Page 12: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 12

קווים מנחים לבחירת אינדקסים

(:+B )אינדקס המרה לעומת אינדקס 5קו מנחה • טוב לשאילתות עם חיפוש על פי טווח ערכים+Bאינדקס מבוסס עצי – index nested loopאינדקס מבוסס המרה טוב לביצוע צירוף על פי –

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

פי התאמה מדויקת בלבד )בלי חיפוש על פי טווח ערכים(

שינוי היחס שעליו )מחיר תחזוקת האינדקס(:6קו מנחה •מוגדר האינדקס עשוי לגרור שינוי של האינדקס עצמו ולכן

לאינדקס מחיר תחזוקהאם מחיר תחזוקת האינדקס עולה על התועלת מהאינדקס רצוי –

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

על היחס

Page 13: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 13

אינדקס לתנאי בחירה ולצירוף

אילו אינדקסים יש •לבנות על מנת לקבל

ביצוע יעיל של השאילתה?

כיצד תוכנית הביצוע •של השאילתה

משפיעה על ההחלטה?

SELECT E.ename, D.mgrFROM Employees E, Departments DWHERE D.dname=‘Toy’ AND

E.dno=D.dno

SELECT E.ename, D.mgrFROM Employees E, Departments DWHERE D.dname=‘Toy’ AND

E.dno=D.dno

Department

dname=‘toy’Employee

ename,mgr

Index nestedloop join

Page 14: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 14

אינדקס לתנאי בחירה ולצירוף

אילו אינדקסים יש •לבנות על מנת לקבל

ביצוע יעיל של השאילתה?

כיצד תוכנית הביצוע •של השאילתה

משפיעה על ההחלטה?

SELECT E.ename, D.mgrFROM Employees E, Departments DWHERE D.dname=‘Toy’ AND E.dno=D.dno AND E.age=25

SELECT E.ename, D.mgrFROM Employees E, Departments DWHERE D.dname=‘Toy’ AND E.dno=D.dno AND E.age=25

Department

dname=‘toy’

Employee

ename,mgr

Block nestedloop join

age=25

Page 15: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 15

אינדקס לתנאי טווח ולצירוף

אילו אינדקסים יש •לבנות על מנת לקבל

ביצוע יעיל של השאילתה?

כיצד תוכנית הביצוע •של השאילתה

משפיעה על ההחלטה?

SELECT E.ename, D.dnameFROM Employees E, Departments DWHERE E.sal BETWEEN 3000 AND 5000

AND E.city=‘Afula’ AND E.dno=D.dno

SELECT E.ename, D.dnameFROM Employees E, Departments DWHERE E.sal BETWEEN 3000 AND 5000

AND E.city=‘Afula’ AND E.dno=D.dno

SELECT E.ename, D.dnameFROM Employees E, Departments DWHERE 3000<=E.sal AND E.sal<=5000

AND E.city=‘Afula’ AND E.dno=D.dno

SELECT E.ename, D.dnameFROM Employees E, Departments DWHERE 3000<=E.sal AND E.sal<=5000

AND E.city=‘Afula’ AND E.dno=D.dno יש לבחון את הסלקטיביות

של תנאי הבחירה

Page 16: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 16

אינדקס מקבץ

אילו אינדקסים יש •לבנות על מנת לקבל

ביצוע יעיל של השאילתה?

האם יש חשיבות •לשאלה אם האינדקס

הוא מקבץ?כיצד ישפיע הנתון על •

אחוז העובדים שגילם ?40גדול מ-

SELECT E.dnoFROM Employees EWHERE E.age>40

SELECT E.dnoFROM Employees EWHERE E.age>40

האם לבנות אינדקס על האטריביוטcity של Employee?

האם לבנות אינדקס על האטריביוטcity של Employee?

SELECT E.dnoFROM Employees EWHERE E.city=‘Afula’

SELECT E.dnoFROM Employees EWHERE E.city=‘Afula’

Page 17: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 17

השפעה של אינדקס מקבץ

אחוז הרשומות שיש להביא 1000

מחיר

אינדקס מקבץ

אינדקס לא מקבץ

סריקה סדרתית

Page 18: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 18

אינדקס על מספר עמודות

אילו אינדקסים יש •לבנות על מנת לקבל

ביצוע יעיל של השאילתה?

האם יש הבדל בין •אינדקס לפי

<age,sal> לאינדקס ?<sal,age>לפי

SELECT E.eidFROM Employees EWHERE E.sal BETWEEN 3000 AND 5000

AND E.age BETWEEN 20 AND 30

SELECT E.eidFROM Employees EWHERE E.sal BETWEEN 3000 AND 5000

AND E.age BETWEEN 20 AND 30

SELECT E.eidFROM Employees EWHERE E.sal BETWEEN 3000 AND 5000

AND E.age=25

SELECT E.eidFROM Employees EWHERE E.sal BETWEEN 3000 AND 5000

AND E.age=25

Page 19: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 19

שימוש באינדקס במקום ביחס

נניח שיש אינדקס צפוף • ביחס dnoעל עמודה

Employeeכיצד ניתן להשתמש •

באינדקס על מנת לקבל חישוב יעיל של השאילתה?

האם יש חשיבות לכך •שהאינדקס יהיה צפוף?

האם יש חשיבות לכך •שהאינדקס יהיה מקבץ?

SELECT D.mgrFROM Departments D, Employees EWHERE D.dno=E.dno

SELECT D.mgrFROM Departments D, Employees EWHERE D.dno=E.dno

SELECT E.dno, COUNT(*)FROM Employees EGROUP BY E.dno

SELECT E.dno, COUNT(*)FROM Employees EGROUP BY E.dno

Page 20: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 20

שימוש באינדקס במקום ביחס

האם בשאילתות •הבאות ניתן להשתמש

באינדקס כדי לא לגשת ליחס

Employee?אם כן כיצד יראה •

האינדקס?

SELECT D.mgr, E.eidFROM Departments D, Employees EWHERE D.dno=E.dno

SELECT D.mgr, E.eidFROM Departments D, Employees EWHERE D.dno=E.dno

SELECT E.dno, COUNT(*)FROM Employees EWHERE E.sal=10000GROUP BY E.dno

SELECT E.dno, COUNT(*)FROM Employees EWHERE E.sal=10000GROUP BY E.dno

SELECT E.dno, MIN(E.sal)FROM Employees EGROUP BY E.dno

SELECT E.dno, MIN(E.sal)FROM Employees EGROUP BY E.dno

Page 21: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 21

כוונון מסד הנתונים

להשגת ביצוע יעיל של מערכת מסד •הנתונים יש לבצע

כוונון אינדקסים–כוונון הסכמה הכללית–כוונון השאילתות–

Page 22: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 22

כוונון אינדקסים

תוך כדי עבודה עם מסד הנתונים ניתן לעיתים לגלות כי•שאילתות שנראו חשובות )שכיחות( בעת תכנון המסד אינן –

באמת חשובות שאילתות שלא נראו חשובות )שכיחות( בעת תכנון המסד הן –

חשובות

יש לשנות את קבוצת האינדקסים במערכת על ידי •הוספת אינדקסים וביטול אחרים

פעולות עדכון של יחס מבצעות שינויים באינדקסים על •היחס ולעיתים פוגעות בטיב האינדקס

ניתן לייעל את האינדקס על ידי מחיקתו ויצירתו מחדש•

Page 23: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 23

כוונון הסכימה הכללית)מבנה הטבלאות(

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

לעיתים נדרש ארגון מחדש מטעמי יעילות •ביצוע של שאילתות

Page 24: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 24

פעולות שניתן לעשות בכוונון הסכימה של המסד

BCNF במקום 3NFלהתפשר על צורת •אם יש יותר מפירוק אחד בצורה הנורמלית הרצויה •

הבחירה בין הפירוקים תעשה משיקולי יעילות ביצועBCNFניתן לפרק סכימה שהיא כבר בצורת •אפשר לחבר סכמות שהופרדו בפירוק או להוסיף •

אטריביוטים לסכימה על מנת לייעל ביצוע שאילתות )אף שיתכן שזה יצור בעיה של כפילויות(

ניתן לפרק יחסים פירוק אופקי )חלוקת היחס לשני •יחסים בעלי סכימה זהה(

ניתן למסך פעולות כוונוןעל ידי שימוש בתצפיות

Page 25: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 25

טבלאות דוגמה

Contracts(cid, suplierid, projectid, deptid, partid, qty, value)

Departments(did, budget, annualreport)

Parts(pid, cost)

Projects(jid, mgr)

Suppliers(sid, address)

Page 26: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 26

התפשרות על הצורה הנורמלית

CSJDPQVאת טבלת החוזים נייצג כ-•אילוצי תקינות:•

JPCבפרוייקט חלק נרכש בחוזה יחיד: –

DSPמחלקה לא קונה מספק יותר מחלק אחד: –

–Cהוא מפתח ראשי של טבלת החוזים

C, JPמפתחות של טבלת החוזים: •3NF אך תואמת BCNF סותרת DSPהתלות • שהוא משמר תלויות וחסר BCNFפירוק לצורת •

SDP, CSJDQV, CJPאבדן: נניח ששאילתה נפוצה במערכת היא מהו מספר •

, האם P שהוזמן בחוזה P של חלק Qהחלקים נרצה לבצע את הפירוק?

Page 27: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 27

איחוד טבלאות (denormalization)

נניח ששאילתה נפוצה במערכת החוזים •היא לבדוק שהערך של חוזה הוא פחות

מהתקציב של המחלקה המבצעת של המחלקות נמצא ביחס של Bהתקציב •

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

)באיזו צורה DBאז נקבל את התלות נורמלית יחס החוזים כעת?(

Page 28: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 28

בחירת הפירוק

בדוגמה הקודמת בחרנו פירוק לצורת •BCNF: שהוא משמר תלויות וחסר אבדן

– SDP, CSJDQV, CJP

הוא פירוק לצורת פירוק אפשרי אחר•BCNF וחסר אבדן שאינו משמר את

התלויות:– SDP, CSJDQVJPCלא נשמרת התלות –

Page 29: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 29

פירוק אנכי

SDP, CSJDQVנניח שנבחר הפירוק: •אין סיבה לפרק יותר מפני שהסכמות בצורת •

BCNFנניח ששאילתות נפוצות הן:•

Sמהם החוזים שקיבל ספק –

Dמהם החוזים שהוציאה מחלקה –

SDP, CS, CD, CJQVניתן להשתמש בפירוק:•מה יקרה אם שאילתה נוספת נפוצה היא מציאת •

הערך הכולל של החוזים שקיבל ספק מסוים

Page 30: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 30

פירוק אופקי

נניח שהחוזים מחולקים לשניים:•value>10000חוזים גדולים שבהם –

value<=10000חוזים קטנים שבהם –

ניתן לבצע הפרדה )אופקית( לשני יחסים: •LargeContracts, SmallContracts

ניתן למסך את החלוקה בעזרת הגדרת תצפית:•

Create view Contracts(cid, suppliers, projectid, deptid, partid, qty, value)as ((Select * From LargeContracts) Union (Select * From SmallContracts))

Page 31: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 31

כוונון שאילתות

כוונון שאילתות נעשה כאשר מגלים •ששאילתה מחושבת באופן איטי מהמצופה

ניתן לבחון את תוכנית הביצוע של •השאילתה ולבחון האם היא מה שמצופה

ניתן לשפר שאילתה על ידי שכתוב שלה •בצורה שונה

ניתן לשפר ביצוע שאילתה על ידי •הוספת/שינוי אינדקסים רלוונטיים

Page 32: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 32

כוונון שאילתות

מניעת מקרים שאינם מטופלים בצורה יעילה •:optimizersעל ידי

NULLתנאי בחירה שכולל –

תנאי בחירה שכוללים –(, sal/100<5, E.age=D.age/2ביטויים חשבוניים )כגון, •( , ’ename like ‘%Aביטויים על מחרוזות )כגון,•ORתנאי •

לגבי ביצוע optimizerנתינת הנחיות ל-•השאילתה

Page 33: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 33

לדוגמא

cityנניח שקיים אינדקס על , ageוקיים אינדקס על

?optimizerמה יעשה ה-

SELECT E.dnoFROM Employees EWHERE E.city=‘Afula’ OR E.age=25

SELECT E.dnoFROM Employees EWHERE E.city=‘Afula’ OR E.age=25

SELECT E.dnoFROM Employees EWHERE E.city=‘Afula’UNION ALLSELECT E.dnoFROM Employees EWHERE E.age=25

SELECT E.dnoFROM Employees EWHERE E.city=‘Afula’UNION ALLSELECT E.dnoFROM Employees EWHERE E.age=25

שתי השאילתות שקולות?

Page 34: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 34

שאילתה אחת במקום ביצוע בשלבים

SELECT * INTO TempFROM Employees E, Departments DWHERE E.dno=D.dno AND D.mgr=‘Cohen’

SELECT * INTO TempFROM Employees E, Departments DWHERE E.dno=D.dno AND D.mgr=‘Cohen’

SELECT T.dno, AVG(T.sal)FROM Temp TGROUP BY T.dno

SELECT T.dno, AVG(T.sal)FROM Temp TGROUP BY T.dno

SELECT E.dno, AVG(E.sal)FROM Employees E, Departments DWHERE E.dno=D.dno AND D.mgr=‘Cohen’GROUP BY E.dno

SELECT E.dno, AVG(E.sal)FROM Employees E, Departments DWHERE E.dno=D.dno AND D.mgr=‘Cohen’GROUP BY E.dno

בחלק מהמערכות, שאילתות שקולות שאחת

כוללת תת שאילתות והשניהלא כוללת תת שאילתות,

השאילתה בלי התת שאילתותתבוצע בצורה יעילה יותר!

Page 35: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 35

השפעה של מקביליות

בעבודה עם ריבוי משתמשים הנעילות גורמות •לעסקאות )טרנזקציות( להמתין לשחרור

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

אינדקסים בקרבה ליחסים שלהם( +Bמניעת צווארי בקבוק )לדוגמה שורש של עץ –

במנעולים בעלי גרעיניות משתנהושימוש

Page 36: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 36

מנעולים עם גרעיניות מרובהMultiple-Granularity Locks

אם עסקה צריכה לנעול את מרבית הדפים •)בלוקים( של טבלה )יחס(, אז עדיף שהעסקה

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

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

תנעל רק דפים אלה, כדי לא למנוע מעסקאות אחרות לפעול במקביל על דפים אחרים של

אותה טבלה

Page 37: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 37

באופן דומה

אם עסקה צריכה לנעול את מרבית •הרשומות הנמצאות בדף נתון, אז

מוטב לנעול את כל הדףלעומת זאת, אם עסקה צריכה לנעול •

רק חלק קטן מהרשומות, אז מוטב לנעול רק את הרשומות האלה ולא

את כל הדף

Page 38: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 38

לפיכך, הבעיה היא כיצד לנהל נעילות ברמות שונות של

גרעיניותאיך מוודאים שמנעול בלעדי שניתן •

לעסקה אחת על דף מסוים אינו סותר מנעול בלעדי )או משותף( שניתן

לעסקה אחרת על כל הטבלה?

Page 39: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 39

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

המבנה ההירארכי•מסד הנתונים מכיל טבלאות–כל טבלה )יחס( מכילה דפים–כל דף )בלוק( מכיל רשומות–

ניתן לתאר מבנה זה כעץ, כאשר•השורש הוא כל מסד הנתונים–הילדים של צומת בעץ הם כל האיברים מהרמה הנמוכה –

יותר המוכלים בולדוגמה, הילדים של טבלה הם כל הדפים של •

הטבלה

Page 40: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 40

X או Sנעילת צומת ע"י מנעול פירושה נעילת כל תת-העץ

מוחזק על צומת X או Sאם מנעול מסוג •בעץ, אז המשמעות היא שמנעול זה מוחזק

על על כל הצאצאים של הצומתלכן, עסקה אינה צריכה לנעול צומת אם •

היא מחזיקה מנעול מאותו הסוג על הורה ( של הצומתancestorאו הורה קדמון )

Page 41: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 41

צריך גם מנעולי כוונהIntention Locks

IX מסומן ע"י intention exclusiveמנעול מסוג •, אז פירוש IXאם עסקה נועלת צומת ע"י מנעול •

הדבר שיש לה כוונה לנעול צאצאים של הצומת Xע"י מנעול

IS מסומן ע"י intention sharedמנעול מסוג •, אז פירוש ISאם עסקה נועלת צומת ע"י מנעול •

הדבר שיש לה כוונה לנעול צאצאים של הצומת Sע"י מנעול

Page 42: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 42

תאימות בין סוגי המנעולים

כל Sכמו קודם, על צומת יכולים להיות מספר מנעולי • )של עסקה אחרת(Xעוד אין מנעול מסוג

כל עוד אין ISעל צומת יכולים להיות מספר מנעולי • )של עסקה אחרת(Xמנעול מסוג

כל עוד אין IXעל צומת יכולים להיות מספר מנעולי • )של עסקאות אחרות(X או Sמנעולים מסוג

ISלדוגמה, על צומת יכולים להיות מספר מנעולי • בו-זמניתIXומספר מנעולי

בו-זמניתS ומספר מנעולי ISאפשר גם מספר מנעולי •, אז אין אפשרות לאף מנעול נוסףXאם יש מנעול •

Page 43: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 43

הפרוטוקול לנעילות רב-גרעיניות

,S, Xעסקה חייבת להתחיל בנעילת השורש ע"י •IX או IS

אם היא S או ISעסקה יכולה לנעול צומת ע"י • על ההורה של הצומת ISמחזיקה

אם היא X או IXעסקה יכולה לנעול צומת ע"י • על ההורה של הצומתIXמחזיקה

, אז כל X או S כשעסקה נועלת צומת ע"י הערה:•הצאצאים של הצומת נעולים גם הם ואין צורך

להמשיך לרדת בעץ כדי לנעול

Page 44: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 44

המשך הפרוטוקול

,ISאי אפשר להסיר מנעול מכל סוג שהוא )•IX, S או X מצומת נתון, אלא אם כן אין שום )

מנעולים על הילדים של הצומתכל הנעילות )מכל ארבעת הסוגים( מתנהלות •

לפי הפרוטוקול של נעילות בשתי פאזות:תחילה, עסקה מבצעת רק נעילות–לאחר השחרור הראשון של מנעול )מכל סוג –

שהוא(, עסקה יכולה רק לשחרר מנעולים

Page 45: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 45

מדוע התנאי ש

או IS, IX, Sאי אפשר להסיר מנעול מכל סוג שהוא )•X מצומת נתון, אלא אם כן אין שום מנעולים על )

הילדים של הצומת?אם עסקה מסירה את המנעול שלה מהשורש )ואין •

מנעולים אחרים על השורש(, אז כל עסקה אחרת ואז למעשה כל העץ Xיכולה לנעול את השורש ע"י

Xנעול ע"י על X או Sאם העסקה הראשונה עדיין מחזיקה מנעול –

צומת כלשהי בעץ זה סותר את הדרישה שהעסקה האחרת בלעדי על כל העץXמחזיקה מנעול

Page 46: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 46

מקרה נפוץ

עסקה רוצה לקרוא יחס במלואו ולשנות •מספר קטן של רשומות השייכות ליחס

העסקה תנעל את הצומת המתאימה לכל •S וע"י IXהיחס ע"י

בהמשך העסקה תנעל צאצאים נוספים •X או IXע"י

Page 47: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 47

נכונות

הפרוטוקול של נעילות רב גרעיניות מייצר •רק תזמונים ברי סדרתיות קונפליקטית

506ההוכחה בספר של אולמן, עמוד • קרויים intention locksבספר של אולמן –

warnings

Page 48: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 48

הסלמה של גירעוןGranularity Escalation

איך מחליטים מהי הגרעיניות המתאימה •לעסקה נתונה?

אפשר להתחיל עם גרעיניות עדינה •)למשל, נעילה ברמה של רשומות( ולאחר

שמספר המנעולים שהעסקה מבקשת עובר סף מסוים, אז מגדילים את הגרעיניות

לרמה הבאה )למשל, נעילות ברמה של דפים(

Page 49: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 49

Oracleכוונון ב-

Page 50: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 50

Oracle Query Optimizers

פועל בשתי שיטותoptimizerה-••Rule-based (RBO):

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

•Cost-based (CBO):משתמש באינפורמציה שיש על המסד )כגון גודל –

הטבלאות( כדי לבחור את מסלול הביצוע הטוב ביותרדורש אנליזה של הטבלאות במסד המתקבלת –

Analayzeמהפעלת פקודת Oracle-משתמש ב rule-basedאם לכל הטבלאות

המשתתפות בשאילתה לא נעשתה להן אנליזה

Page 51: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 51

דוגמא, בחירת סדר הגישה Fromלטבלאות המופיעות ב-

•RBO נדרש לבחור את הטבלה שאליה Fromנגשים ראשונה מטבלאות ה-

טבלה שיש לה אינדקס על מפתח ראשי •נבחרת לפני טבלה שאין לה אינדקס ראשי

... חוקים נוספים ...• לא מצליח, בהתבסס על RBOאם •

החוקים, לבחור טבלה מתאימה, הטבלה הימנית ביותר נבחרת

Page 52: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 52

RBOעזרה ל-

מסודרות על פי גודלן: Fromהטבלאות יופיעו ב-•הקטנות מימין לטבלאות הגדולות יותר

תנאי הצירוף יופיעו ראשונים בתנאי הצירוף • הוא מלמעלה למטהparsing כי ה-Whereב-

תנאי שמסננים הכי הרבה רשומות יופיעו בסוף •Whereתנאי ה-

( לטבלאות aliasesשימוש בכינויים קצרים )•(From Employees E )לדוגמה, parsingחוסך ב-

Page 53: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 53

CBOפעולת

משתמש באינפורמציה על הטבלאות •לקביעת תוכנית הביצוע הטובה ביותר

יוצרת סטטיסטיקות על ANALYZEפעולת •הטבלאות

אם קיימת סטטיסטיקה רק על חלק • משתמש CBOמהטבלאות בשאילתה,

בסטטיסטיקה הקיימת לבצע הערכה של הנתונים החסרים

Page 54: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 54

סטטיסטיקה

על טבלאות:•מספר שורות, מספר בלוקים, אורך שורה ממוצע–

על עמודות:•, nullמספר הערכים השונים בעמודה ומספר ערכי –

התפלגות הערכים )היסטוגרמה(

על אינדקסים:•מספר הבלוקים באינדקס שהם עלים, מספר הרמות –

באינדקס, פקטור המעיד באיזו רמה האינדקס מקבץ

על המערכת:•–I/O וביצועי CPUניצולת משאבי מערכת ,

Page 55: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 55

Optimizerבחירת אופן פעולת ה-

alter session set optimizer_goal <goal>;

מבין:goalניתן לבחור •–RULE מפעיל :rule-base optimizer

–ALL_ROWS מפעיל :cost-based optimizer עם מטרה לקבל סיום משימה בזמן הטוב ביותר

–FIRST_ROWS מפעיל cost-based optimizer עם מטרה לקבל רשומה ראשונה של תוצאה הכי מהר

–CHOOSE-ה :optimizer בוחר מבין השלוש שתוארו על פי הסטטיסטיקות שקיימות

Page 56: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 56

כיצד יודעים מהי תוכנית הביצוע של שאילתה?

explain planניתן להשתמש בפקודה •

set autotrace onניתן להפעיל •

בשני המקרים התוצאה נרשמת בטבלה •PLAN_TABLEבשם

על PLAN_TABLEניתן לייצר את טבלת •ידי קריאה ל-

@$ORACLE_HOME/rdbms/admin/utlxplan.sql

Page 57: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 57

explain planset statement_id='sailorstest'for SELECT snameFROM Sailors SWHERE sname='Joe' and sid in (SELECT sid

FROM Reserves WHERE bid=10);

explain plan set statement_id=‘<name>’ for <statement>

Page 58: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 58

SELECT lpad(' ',2*Level)||Operation||' '||Options||' '||Object_Name Execution_PathFROM Plan_TableWHERE Statement_Id='sailorstest';

שליפת תוכנית הביצוע Plan_Tableמ-

Page 59: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 59

Page 60: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 60

פעולות אפשריות וערכיהן

• TABLE ACCESS : FULL, BY ROWID, HASH• SORT: UNIQUE, AGGREGATE, JOIN• NESTED LOOP• MERGE JOIN• FILTER• INDEX: UNIQUE SCAN, RANGE SCAN,

RANGE SCAN DESCENDING• FIRST ROW

Page 61: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 61

Analyzeביצוע פעולת

analyze table | index <table-name | index-name> compute statistics | estimate statistics [sample <integer> rows | precent] |

delete statistics;

analyze table Sailors estimate statistics sample 50 precent;

Page 62: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 62

optimizerרמזים ל-

שאומרים optimizerניתן להוסיף רמזים ל-•איך לדעת כותב השאילתה כדאי לבצע את

השאילתה*/< hints >/*+רמזים יופיעו בתוך •selectרמזים יופיעו מייד אחרי ה-•

Page 63: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 63

דוגמאותSelect /*+ FULL (sailors) */ sidFrom sailorsWhere sname=‘Joe’;

Select /*+ INDEX (sailors) */ sidFrom sailorsWhere sname=‘Joe’;

Select /*+ RULE */ sidFrom sailors S, reserves RWhere S.sid=R.sid AND sname=‘Joe’;

Page 64: תכנון וכוונון מסד הנתונים  ( Tuning the Database )

מסדי נתונים תשס"ג 64

דוגמאותSelect /*+ USE_NL (sailors) */ sidFrom sailors S, reserves RWhere S.sid=R.sid AND sname=‘Joe’;

Select /*+ USE_MERGE (sailors, reserves) */ sidFrom sailors S, reserves RWhere S.sid=R.sid AND sname=‘Joe’;

Select /*+ USE_HASH */ sidFrom sailors S, reserves RWhere S.sid=R.sid AND sname=‘Joe’;