תצוגת SEARCH_INDEXES_BY_ORGANIZATION
אינדקסים לחיפוש ב-BigQuery מספקים ניהול אינדקסים בחינם עד שהארגון מגיע למגבלה באזור נתון. בתצוגה INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION אפשר לראות את השימוש הנוכחי שלכם מתוך המגבלה, עם פירוט לפי פרויקטים וטבלאות. התצוגה INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION מכילה שורה אחת לכל אינדקס חיפוש של הארגון כולו שמשויך לפרויקט הנוכחי.
ההרשאות הנדרשות
כדי לשלוח שאילתה לתצוגה INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION, אתם צריכים את ההרשאות הבאות לניהול זהויות והרשאות גישה (IAM) בארגון:
bigquery.tables.getbigquery.tables.list
כל אחד מהתפקידים הבאים שמוגדרים מראש ב-IAM כולל את ההרשאות שצוינו למעלה:
roles/bigquery.adminroles/bigquery.dataViewerroles/bigquery.dataEditorroles/bigquery.metadataViewer
תצוגת הסכימה הזו זמינה רק למשתמשים עם Google Cloud ארגונים מוגדרים.
מידע נוסף על הרשאות ב-BigQuery זמין במאמר בקרת גישה באמצעות IAM.
סכימה
לתצוגה INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION יש את הסכימה הבאה:
| שם העמודה | סוג נתונים | ערך |
|---|---|---|
project_id |
STRING |
שם הפרויקט שמכיל את מערך הנתונים. |
project_number |
STRING |
מספר הפרויקט שמכיל את מערך הנתונים. |
index_catalog |
STRING |
שם הפרויקט שמכיל את מערך הנתונים. |
index_schema |
STRING |
השם של מערך הנתונים שמכיל את האינדקס. |
table_name |
STRING |
השם של טבלת הבסיס שעליה נוצר האינדקס. |
index_name |
STRING |
השם של אינדקס החיפוש. |
index_status |
STRING |
הסטטוס של האינדקס יכול להיות אחד מהבאים:
|
index_status_details |
RECORD |
הרשומה מכילה את השדות הבאים:
|
use_background_reservation |
BOOL |
מציין אם תחזוקת האינדקס משתמשת בהזמנה BACKGROUND. הערך שמוגדר הוא FALSE כשמגיעים למגבלה במהלך תחזוקת האינדקס. |
כדי לשמור על יציבות, מומלץ לציין במפורש את העמודות בשאילתות של סכימת המידע, במקום להשתמש בתו כל כללי (SELECT *). ציון מפורש של העמודות מונע את השבירה של השאילתות אם הסכימה הבסיסית משתנה.
היקף ותחביר
שאילתות שמופעלות על התצוגה הזו חייבות לכלול מסנן אזור. בטבלה הבאה מוסבר היקף האזור בתצוגה הזו:
| שם התצוגה | היקף המשאבים | היקף האזור |
|---|---|---|
[`PROJECT_ID`.]`region-REGION`.INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION |
הארגון שמכיל את הפרויקט שצוין | REGION |
מחליפים את מה שכתוב בשדות הבאים:
אופציונלי:
PROJECT_ID: מזהה הפרויקט ב-Google Cloud . אם לא מציינים פרויקט, המערכת משתמשת בפרויקט שמוגדר כברירת מחדל.
REGION: האזור של הפרויקט. לדוגמה,`myproject`.`region-us`.INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION.
ויסות נתונים של אינדקס
אם יש הגבלת קצב העברה של אינדקס, גודל הטבלה שלו לא נספר במגבלה של הארגון. ההגבלה הזו מתרחשת כשגודל טבלת הבסיס קטן מ-10GB או גדול מהמגבלה של הארגון. כשמגבילים את קצב הבקשות של אינדקס, עבודות הניהול שלו מושהות, מה שגורם לאינדקס להיות לא עדכני ובסופו של דבר מושבת באופן זמני. לכן, אי אפשר להשתמש באינדקס בשאילתות חיפוש.
אפשר להגדיר התראות כדי לקבל עדכון כשחורגים מסף מסוים, בדומה להגדרת התראות לשאילתות מתוזמנות. לדוגמה, אפשר להגדיר התראה שתופעל כשגודל הטבלה יעבור 70% ממגבלת המכסה, כדי שיהיה לכם זמן לפעול.
דוגמאות
הקטע הזה כולל דוגמאות לשאילתות של התצוגה המפורטת INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION.
איך בודקים אם הצריכה חורגת מהמגבלה באזור מסוים
הדוגמה הבאה ממחישה מה קורה אם הגודל הכולל של טבלת הבסיס עם האינדקסים בארגון, שמשתמש במשבצות משותפות באזור מרובה של ארה"ב, חורג מ-100TB:
WITH indexed_base_table_size AS ( SELECT SUM(base_table.total_logical_bytes) AS total_logical_bytes FROM `region-us`.INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION AS search_index JOIN `region-us`.INFORMATION_SCHEMA.TABLE_STORAGE_BY_ORGANIZATION AS base_table ON (search_index.table_name = base_table.table_name AND search_index.project_id = base_table.project_id AND search_index.index_schema = base_table.table_schema) WHERE TRUE -- Excludes search indexes that are permanently disabled. AND search_index.index_status != 'PERMANENTLY DISABLED' -- Excludes BASE_TABLE_TOO_SMALL search indexes whose base table size is -- less than 10 GB. These tables don't count toward the limit. AND search_index.index_status_details.throttle_status != 'BASE_TABLE_TOO_SMALL' -- Excludes search indexes whose project has BACKGROUND reservation purchased -- for search indexes. AND search_index.use_background_reservation = false -- Outputs the total indexed base table size if it exceeds 100 TB, -- otherwise, doesn't return any output. ) SELECT * FROM indexed_base_table_size WHERE total_logical_bytes >= 109951162777600 -- 100 TB
התוצאה אמורה להיראות כך:
+---------------------+ | total_logical_bytes | +---------------------+ | 109951162777601 | +---------------------+
חיפוש הגודל הכולל של טבלת הבסיס שעברה אינדוקס לפי פרויקטים באזור
בדוגמה הבאה מוצג פירוט של כל פרויקט באזור רב-אזורי בארה"ב עם הגודל הכולל של טבלאות הבסיס שנוספו לאינדקס:
SELECT search_index.project_id, search_index.use_background_reservation, SUM(base_table.total_logical_bytes) AS total_logical_bytes FROM `region-us`.INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION AS search_index JOIN `region-us`.INFORMATION_SCHEMA.TABLE_STORAGE_BY_ORGANIZATION AS base_table ON (search_index.table_name = base_table.table_name AND search_index.project_id = base_table.project_id AND search_index.index_schema = base_table.table_schema) WHERE TRUE -- Excludes search indexes that are permanently disabled. AND search_index.index_status != 'PERMANENTLY DISABLED' -- Excludes BASE_TABLE_TOO_SMALL search indexes whose base table size is -- less than 10 GB. These tables don't count toward limit. AND search_index.index_status_details.throttle_status != 'BASE_TABLE_TOO_SMALL' GROUP BY search_index.project_id, search_index.use_background_reservation
התוצאה אמורה להיראות כך:
+---------------------+----------------------------+---------------------+ | project_id | use_background_reservation | total_logical_bytes | +---------------------+----------------------------+---------------------+ | projecta | true | 971329178274633 | +---------------------+----------------------------+---------------------+ | projectb | false | 834638211024843 | +---------------------+----------------------------+---------------------+ | projectc | false | 562910385625126 | +---------------------+----------------------------+---------------------+
איך מוצאים אינדקסים של חיפושים שמוגבלים
בדוגמה הבאה מוצגים כל אינדקסי החיפוש שמוגבלים בארגון ובאזור:
SELECT project_id, index_schema, table_name, index_name FROM `region-us`.INFORMATION_SCHEMA.SEARCH_INDEXES_BY_ORGANIZATION WHERE -- Excludes search indexes that are permanently disabled. index_status != 'PERMANENTLY DISABLED' AND index_status_details.throttle_status IN ('ORGANIZATION_LIMIT_EXCEEDED', 'BASE_TABLE_TOO_LARGE')
התוצאה אמורה להיראות כך:
+--------------------+--------------------+---------------+----------------+ | project_id | index_schema | table_name | index_name | +--------------------+--------------------+---------------+----------------+ | projecta | dataset_us | table1 | index1 | | projectb | dataset_us | table1 | index1 | +--------------------+--------------------+---------------+----------------+