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

העברת שאילתות שקופה מתאימה במיוחד לתרחישים הבאים:
- עומסי עבודה היברידיים (HTAP): אתם מריצים שאילתות של דיווח או ניתוח, עם עקביות של קריאה-כתיבה, באותו מסד נתונים שמטפל בעסקאות, ואתם רוצים למנוע מקריאות יקרות להשפיע על זמן האחזור של הכתיבה.
- אפליקציות מונוליטיות: אתם רוצים להשתמש בקיבולת של מאגר לקריאה בלי לשנות את האפליקציה כדי להשתמש בנקודות קצה נפרדות לקריאה ולכתיבה, ועדיין נדרשת עקביות קפדנית של קריאה-כתיבה.
- ניהול עומסים דינמי: אתם חווים עליות בלתי צפויות בתעבורת נתונים של קריאה ואתם רוצים שמסד הנתונים יפחית באופן אוטומטי את העומס על הצמתים של מאגר הקריאה כשהעומס על הצומת הראשי גבוה, עם עקביות של קריאה-כתיבה.
לפני שמתחילים
מוודאים שאשכול AlloyDB תואם ל-PostgreSQL 17 או 18.
צריך להגדיר לפחות מופע אחד פעיל של מאגר לקריאה באשכול AlloyDB. מידע על יצירה או אימות של מופעי מאגר לקריאה מופיע במאמרים יצירת מופע של מאגר לקריאה באשכול והצגת פרטי מופע.
התפקידים הנדרשים
- חשוב לוודא שאתם מתחברים באמצעות משתמש מובנה במסד הנתונים, כמו
postgres. אין תמיכה באימות מבוסס IAM.
הפעלת העברה שקופה של שאילתות
העברה שקופה של שאילתות מושבתת כברירת מחדל. אפשר להפעיל אותו באופן דינמי ברמת הסשן או ברמת מסד הנתונים בלי להפעיל מחדש את מסד הנתונים.
הפעלה ברמת הסשן
כדי להפעיל העברה שקופה של שאילתות בסשן הנוכחי, מריצים את פקודת ה-SQL הבאה:
SET alloydb.enable_query_forwarding = TRUE;
הפעלה ברמת מסד הנתונים
כדי להפעיל העברה שקופה של שאילתות למסד נתונים ספציפי, מריצים את פקודת ה-SQL הבאה:
ALTER DATABASE DATABASE_NAME SET alloydb.enable_query_forwarding = ON;
מחליפים את DATABASE_NAME בשם של מסד הנתונים.
תנאי הכשירות של השאילתה
- העברה שקופה של שאילתות חלה רק על הצהרות
SELECTלקריאה בלבד. - השאילתה לא יכולה להשתמש בנעילות ברמת השורה, כמו אלה שמשמשות ב-
SELECT ... FOR UPDATE. - התמיכה בהעברה שקופה של שאילתות מוגבלת להצהרות
SELECTבעסקאות עם כמה הצהרות. - אי אפשר להפנות בשאילתות לטבלאות זמניות, לטבלאות שלא נרשמו ביומן או לטבלאות בקטלוג.
- השאילתה צריכה לעמוד במגבלות הפונקציה הבאות:
- השאילתה לא יכולה להכיל פונקציות תנודתיות או פונקציות בהגדרת המשתמש (UDF).
- השאילתה לא יכולה להכיל פונקציות של ערכי SQL כמו
CURRENT_DATE,LOCALTIME,USERאוCURRENT_SCHEMA. - השאילתה לא יכולה להכיל ביטויי
NEXTVAL(). - השאילתה לא יכולה להכיל פונקציות או פרוצדורות של SQL.
- כל עמודות התוצאות צריכות להשתמש בסוגי נתונים שמטמיעים פונקציות של שליחה וקבלה בינאריות.
- שאילתה יכולה להיות מועברת רק אם העלות התקורה שלה מינימלית בהשוואה לעלות הכוללת של השאילתה. המשמעות היא שבדרך כלל לא נכללות שאילתות שמשתמשות בסריקות אינדקס, כי התקורה שלהן בדרך כלל גבוהה מהעלות של השאילתה עצמה.
- אין תמיכה בהעברה לגיבוי פעיל של AlloyDB. צומת המתנה פעילה (hot standby) ב-AlloyDB הוא צומת משני ייעודי למכונות מרכזיות עם זמינות גבוהה (HA).
- השאילתה חייבת להשתמש בפרוטוקול של שאילתה פשוטה. אין תמיכה בפרוטוקול שאילתות מורחב.
אימות הזכאות של שאילתה באמצעות EXPLAIN
בדוגמה הבאה, large_table היא טבלה במסד נתונים עם הרבה שורות. כדי לבדוק אם שאילתה ספציפית עומדת בדרישות להעברה בהתאם להגדרה הנוכחית, מריצים את הפקודה EXPLAIN:
EXPLAIN SELECT count(*) FROM large_table t1, large_table t2;
אם השאילתה עומדת בדרישות, הפלט כולל הצהרה על סטטוס העברת השאילתה אחרי תוכנית הביצוע הרגילה של Postgres. אם ההצהרה הזו חסרה, השאילתה לא כשירה להעברת שאילתות והיא מופעלת באופן מקומי בשרת הראשי.
Aggregate (cost=25000.00..25000.01 rows=1 width=8)
-> Nested Loop (cost=0.00..20000.00 rows=1000000 width=0)
... [Standard Postgres Plan Steps] ...
Query Forwarding: Eligible. (overhead=1250.02)
בתגובת הפלט, Eligible מציין שהשאילתה עומדת בקריטריונים של SQL סטנדרטי לקריאה בלבד, וניתוח העלות-תועלת תומך בהפניה שלה למופע של מאגר לקריאה. הפרמטר overhead מציין את העלות המחושבת של מתכנן העלויות להעברת השאילתה למופע של מאגר לקריאה, כולל התקורה של יצירת החיבור ושחזור תמונות המצב ברפליקה.
מעקב אחרי מדדים של העברת שאילתות
כדי לוודא שהעברת שאילתות שקופה פועלת בכל עומס העבודה, אפשר לעקוב אחרי המדד הבא ב-Cloud Monitoring:
| מדד | תיאור | פרטים |
|---|---|---|
alloydb.googleapis.com/internal/database/postgresql/workload/distributed/tqf_query_count |
הספירה המצטברת של שאילתות שטופלו על ידי העברת שאילתות שקופה. | שם התצוגה: מספר השאילתות של TQF סוג המדד: מצטבר סוג הערך: INT64 תוויות: status: טיפול בשאילתות אם מופעלת העברה שקופה של שאילתות בתווית הזו מתועד אחד מהערכים הבאים:
|