סקירה כללית של שליפה מראש של אינדקס

ב-AlloyDB ל-PostgreSQL, המערכת מאחזרת מראש אינדקסים כדי להאיץ שאילתות שקוראות טווח של שורות דרך אינדקס B-tree. אחזור מראש של אינדקסים מופעל כברירת מחדל במכונות של AlloyDB ו-AlloyDB Omni שפועלות ב-PostgreSQL מגרסה 17 ואילך. כדי ליהנות מהיתרונות של התכונה, לא צריך להגדיר דגלים, לבנות מחדש אינדקסים או לשנות את האפליקציה או את שאילתות ה-SQL.

איך פועל האחזור מראש של אינדקסים

כששאילתה סורקת טווח של ערכים דרך אינדקס – לדוגמה, פרדיקט BETWEEN או פסוקית ORDER BY ... LIMIT בעמודה שנוספה לאינדקס – הסריקה קוראת את דפי האינדקס ואת דפי הטבלה שהרשומות באינדקס מפנות אליהם. דפי הטבלה האלה מפוזרים לעיתים קרובות באחסון. ב-PostgreSQL רגיל, הסריקה קוראת את הדפים האלה אחד אחרי השני, כך שאם הדפים עדיין לא נמצאים בזיכרון, השאילתה מבלה את רוב הזמן בהמתנה לקלט/פלט של האחסון.

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

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

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

יתרונות לעומסי עבודה

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

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

שאילתות שהנתונים שלהן כבר נמצאים במאגרי נתונים זמניים משותפים, וחיפושים בשורה אחת, פועלים באותו אופן עם או בלי אחזור מראש.

אחזור מראש בתוכניות הרצה

כדי לראות את ההשפעה של אחזור מראש של אינדקס על שאילתה, מריצים את השאילתה עם EXPLAIN (ANALYZE, BUFFERS). דפים שהאחזור מראש טוען למטמון ה-SSD המקומי מופיעים כספירות של ultra fast cache hit בצומתי סריקת האינדקס של התוכנית. למידע נוסף על קריאת המונים האלה, ראו קבלת תוכניות ביצוע וניתוח שלהן.

המאמרים הבאים