אופרטורים של ביצוע שאילתות

בדף הזה מוסבר על האופרטורים שמשמשים בתוכניות להפעלת שאילתות ב-Spanner. כדי לקבל מידע על אחזור תוכנית הפעלה לשאילתה ספציפית באמצעות מסוף Google Cloud , אפשר לעיין במאמר הסבר על אופן ההפעלה של שאילתות ב-Spanner.

תוכניות הביצוע תומכות במסדי נתונים של ניב GoogleSQL ובמסדי נתונים של ניב PostgreSQL.

מיפוי של מבני SQL לאופרטורים של ביצוע שאילתות

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

SQL אופרטור להרצת שאילתה
הפניה לטבלה סריקת טבלה, סריקת אינדקס
WHERE סינון סריקה, סינון
GROUP BY Aggregate
פונקציה סקלרית (כמו ISNULL) Compute
פונקציית צבירה (למשל, SUM) Aggregate
JOIN כל אופרטור של הצטרפות; ראו הצטרפויות
שאילתת משנה שאילתת משנה מסוג סקלר או מערך
LIMIT מגבלה, מגבלת מיון
ORDER BY מיון, מגבלת מיון

אופרטורים של ביצוע שאילתות

בקטע הזה מפורטים כל האופרטורים של ביצוע שאילתות שיכולים להופיע בתוכנית לביצוע שאילתות ב-Spanner.

אופרטורים של עלים

אופרטורים שאין להם צאצאים.

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

אופרטורים אונריים

מפעילים שיש להם צאצא יחיד.

שם סיכום
Aggregate מיישם GROUP BY הצהרות SQL ופונקציות צבירה.
החלת מוטציות הפונקציה מחילה על הטבלה את השינויים מהצהרת שפת הטיפול בנתונים (DML).
יצירת קובץ אצווה הפונקציה מחלקת את שורות הקלט לרצף.
Compute הפלט נוצר על ידי קריאת שורות הקלט והוספה של עמודה אחת או יותר שמחושבות באמצעות ביטויים סקלריים.
מבנה Compute יוצר משתנה למבנה שמכיל שדות לכל אחת מעמודות הקלט.
DataBlockToRowAdapter התאמה של שיטת ביצוע מבוססת-אצווה לשיטת ביצוע מבוססת-שורה.
מסנן הפונקציה קוראת את כל השורות מהקלט, מחילה פרדיקט סקלרי על כל שורה ואז מחזירה רק את השורות שמקיימות את הפרדיקט.
מגבלה מגבילה את מספר השורות שמוחזרות.
איגוד מקצועי מקומי מפוצל הפונקציה מאתרת פיצולים של טבלאות שמאוחסנים בשרת המקומי, מפעילה שאילתת משנה על כל פיצול ואז יוצרת איחוד שמשלב את כל התוצאות.
הקצאת מזהה רנדומלי הפלט נוצר על ידי קריאת שורות הקלט והוספת מספר אקראי לכל שורה.
RowToDataBlockAdapter הפונקציה מתאימה שיטת ביצוע שמבוססת על שורות לשיטת ביצוע שמבוססת על קבוצות.
Serialize result מבצע סריאליזציה של כל שורה בתוצאה הסופית של השאילתה כדי להחזיר אותה ללקוח.
מיון הפונקציה קוראת את שורות הקלט, מסדרת אותן לפי עמודה או עמודות, ואז מחזירה את התוצאות הממוינות.
פונקציה שמחזירה טבלה (TVF) הפונקציה יוצרת פלט על ידי קריאת שורות הקלט והחלת הפונקציה שצוינה.
קלט של איחוד מחזירה תוצאות לאופרטור union all.

אופרטורים בינאריים

אופרטורים שיש להם שני צאצאים יחסיים.

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

אופרטורים n-אריים

אופרטורים שיש להם יותר משני צאצאים יחסיים.

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

אופרטורים מבוזרים

אופרטורים שפועלים בכמה שרתים.

שם סיכום
איגוד מקצועי מבוזר מבחינה רעיונית, הפונקציה מחלקת טבלה אחת או יותר לכמה פיצולים, מעריכה מרחוק שאילתת משנה באופן עצמאי בכל פיצול, ואז מאחדת את כל התוצאות.
החלה מבוזרת מרחיב את אופרטור ה-apply join על ידי ביצוע פעולות בכמה שרתים.
מיזוג מאוחד מבוזר מפיץ שאילתה בין כמה שרתים מרוחקים ואז משלב את תוצאות השאילתה כדי ליצור תוצאה ממוינת.
Push broadcast hash join מיישם איחודים (joins) של SQL באמצעות איחוד (join) מבוזר של hash.

שאילתות משנה סקלריות

ביטויי משנה של SQL שמחזירים ערך סקלרי יחיד.

שם סיכום
שאילתות משנה סקלריות ביטויי משנה של SQL שמחזירים ערך סקלרי יחיד.

שאילתות משנה של מערכים

ביטויי משנה של SQL שמחזירים מערך.

שם סיכום
שאילתות משנה של מערכים ביטויי משנה של SQL שמחזירים מערך.

Struct constructor

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

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