23-03-2009, 18:25
|
מנהל
|
|
חבר מתאריך: 26.07.08
הודעות: 6,473
|
|
תודה על ההסבר
עשיתי קצת קריאות בנוסף...
לגבי ה-EXECUTION PLAN הבנתי, אבל תוכל להמליץ לי על איזה דרך טובה שאתה מכיר כדי שאוכל לדעת מהי ה-execution plan? אני משתמש ב-MySQL כפי שכתבתי. כיצד אדע את ה-query plan?
ציטוט:
מספר הבלוקים חשוב על מנת להבין עד כמה כדאי לקרוא את הטבלה כולה לזיכרון
(אם הוא נמוך מספיק, אזי שבעלות I/O קטנה אפשר למיין את הנתונים בזיכרון ביעילות)
ואם הוא גדול מספיק, גם האינדקס יתפרש על מספר בלוקים ויאלץ את מסד הנתונים לבצע I/O רב יותר.
|
ניסיתי לחפש מידע על ה-I/O, אבל אני לא בטוח כיצד זה קשור..?
האם הכוונה היא לקריאות (read) של ה-DBMS מהכונן הקשיח?
עד היום, יצא לי לשמוע על הביטוי I/O בהקשר של שתי מערכות שמתקשרות (מקלדת ומחשב ; או 2 נקודות קצה).
בנוגע לבלוקים, הבנתי שהם סה"כ חלקים קטנים יותר של כל המידע שבטבלה. איך אני יודע כמה בלוקים יש? האם אפשר לראות זאת ב-PMA ? (ר"ת phpMyAdmin)
ציטוט:
פיזור הערכים משפיע על יעילות האינדקס
אם קיימים רק שני ערכים בלבד לכל הרשומות שלך (לדוגמא עמודה של "זכר"/"נקבה")
כמות הנתונים שתקרא מהאינדקס תהיה רבה יותר מאשר באינדקס של ערכים ייחודיים.
|
מצאתי את זה בתור cardinality ב-PMA. בבדיקה שעשיתי היה לי cardinality של 640 באינדקס counter. כדי לדעת אם זה גבוה\נמוך\בינוני - האם אני צריך לייחס את זה למספר הרשומות, או הבלוקים, או משהו אחר?
ציטוט:
אגב, לעניות דעתי, הטבלה שלך קטנה מדי לצורך בדיקה כזו (תכפיל בסדר גודל לפחות)
|
25K שורות זה לא מספיק? :/
גודל הטבלה סה"כ, כולל אינדקס והמידע, הוא KiB. 1,590.8
ציטוט:
ובכלל, אני מניח שלפונקציות סטטיסטיות כאלה בוצעה אופטימיזציה בקוד של מסד הנתונים
כך שהן מבצעות את פעולתן ביעילות רבה יותר מסתם שליפה ומיון.
(נדמה לי שזה מופיע בתיעוד של MySQL)
|
אז איך מהירות הביצוע היה יחסית קרוב...?
אני מניח שלשיטה ORDER BY...LIMIT יש אופטימיזציה ספציפית כאשר זה דומה ל-MAX...
|