יצירת קשר עם התמיכה

אנחנו משיבים בדוא״ל, בדרך כלל בתוך יומיים.

למניעת שימוש לרעה, Google reCAPTCHA בודק את הפנייה הזאת; נתונים נשלחים אל Google. הסקריפט נטען רק עם פתיחת הטופס הזה.

→ כל הרשומות

כשהוספת אינדקס מאיטה את המערכת

על התוכן ועל בדיקתו

במאמר הזה

לטבלת הנתונים היומיים יש מפתח אחד: המונה והתאריך יחד. חמישה מקומות בקוד שואלים אותה שאלה אחרת — לא “המונה הזה לאורך זמן” אלא “כל המונים בתאריכים האלה”. גלריית דף הבית, הדירוגים, מפת האתר, תרשים ל־90 יום ונתוני המצב. ללא אינדקס על עמודת התאריך, כל אחד מהם קורא את כל 114,113 השורות.

הוספת האינדקס הזה מאיצה את הגלריה פי עשרה. הוא לא נוסף. הנה המדידה שהכריעה זאת.

גלריה, יום אחד — 61.5 עד 6.1 ms דירוגים, 30 יום — 88.6 עד 89.2 ms מפת האתר, 14 יום — 79.6 עד 94.8 ms תרשים ל־90 יום — 120.0 עד 109.2 ms נתוני מצב, 365 יום — 204.9 עד 225.1 ms העמודה העליונה ללא האינדקס, התחתונה איתו יחד: 555 ms הופכות ל־524 ms

שאילתה אחת נעשתה מהירה הרבה יותר

הגלריה מבקשת את המונים שהיו פעילים היום. ללא אינדקס על התאריך היא סורקת את כל הטבלה; עם אינדקס היא מוצאת תאריך יחיד וקוראת 443 שורות. 61.5 אלפיות השנייה הפכו ל־6.1. זאת אינה תוצאה עדינה, ואילו זה היה הדבר היחיד שנמדד, האינדקס היה נמצא כעת במסד הנתונים.

שתי שאילתות נעשו איטיות יותר

מפת האתר מבקשת ארבעה עשר יום ונעשתה איטית ב־19%. נתוני המצב מבקשים שנה ונעשו איטיים ב־10%. בשני המקרים מתכנן השאילתות עבר מהמפתח הראשי לאינדקס החדש ובחר בחירה גרועה יותר.

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

אין דרך לומר “יש להשתמש באינדקס הזה לגלריה בלבד”. אינדקס זמין לכל שאילתה שנוגעת בעמודה, והמתכנן ישתמש בו בכל מקום שההערכות שלו אומרות שכדאי. הוספת אינדקס היא שינוי לכל שאילתה בטבלה הזאת, לא רק לזאת שלשמה נועד.

יחד: שום דבר

בכל החמש, 555 אלפיות השנייה הפכו ל־524. שיפור של 1.1×, שבשרת קטן שממילא מגיש את הדפים האלה ממטמון אינו מצדיק שינוי בסכימה.

התרשים ל־90 יום נראה כאילו השתפר ב־9%. הוא אינו נכלל בספירה, וכדאי לומר מדוע. כל שאילתה נמדדה שלוש פעמים: ללא האינדקס, איתו, ואז שוב בלעדיו. אם ההרצה השנייה ללא האינדקס אינה קרובה לראשונה, ההבדל היה המחשב ולא השינוי. בתרשים ל־90 יום שתי ההרצות ללא האינדקס נבדלו ב־13.8% — יותר מההשפעה הנטענת. לכן השורה הזאת אינה מודדת דבר, וכך היא מדווחת.

איך זה נמדד, ולמה זה חשוב

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

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

המספר שהיה מתקבל

אילו המדידה הייתה מתבצעת בדרך הרגילה — לקחת את השאילתה שמרגישה איטית ולמדוד אותה לפני ואחרי — התשובה הייתה “מהיר פי עשרה, לפרסם”. האינדקס היה נכנס, הגלריה הייתה נעשית מהירה יותר, מפת האתר ודף המצב היו נעשים איטיים יותר, ואיש לא היה מקשר בין השניים, כי איש לא צפה בהם.

זה הדפוס הכללי. אי אפשר להעריך שינוי בתשתית משותפת על סמך המקרה שהניע אותו. השאלה אינה “האם זה עוזר לדבר שאני מסתכל עליו” אלא “מה עוד נוגע בזה, ומה קורה לו”.

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

פרסומת