במאמר הזה מוסבר איך להפעיל ידנית דחיסה ראשית במסד נתונים של Spanner.
כדי להפעיל באופן מלא כמה תכונות שקשורות לאחסון ב-Spanner, כמו אחסון בשכבות או מנוע מבוסס-עמודות, צריך לבצע דחיסה ראשית של כל מסד הנתונים. כברירת מחדל, פעולות דחיסה גדולות מתבצעות אוטומטית בכל הטבלאות במרווחי זמן של שבעה ימים. המשמעות היא שאולי תצטרכו לחכות עד שבעה ימים עד שתכונה חדשה תהיה זמינה באופן מלא. כדי שהתכונות החדשות יהיו זמינות באופן מיידי, אפשר להפעיל דחיסה ראשית באופן ידני.
תהליך הדחיסה הוא פעולה ממושכת (LRO).
תמחור
הפעלת דחיסה גדולה מגדילה באופן זמני את קיבולת המחשוב במופע Spanner. הדבר עלול להוביל לעלייה בעלויות.
ביצועים
פעולות דחיסה גדולות מופעלות כפעולות ברקע. עם זאת, אם יש שימוש כבד ועקבי ב-CPU במופע, יכול להיות שעומס העבודה של הדחיסה יפריע לפעולות קריטיות אחרות. במקרים כאלה, אפשר להגדיל באופן זמני את גודל המופע כדי להבטיח ביצועים יציבים במהלך הדחיסה.
הפעלה ידנית של דחיסה משמעותית
מסוף Google Cloud
פותחים את Google Cloud המסוף ובוחרים את המופע.
בוחרים מסד נתונים.
בתפריט הניווט, לוחצים על Spanner Studio.
פותחים כרטיסייה חדשה בלחיצה על New SQL editor tab או על New tab.
מפעילים את הפקודה הבאה כדי להתחיל את הדחיסה:
CALL compact_all();הפעולה הזו מחזירה מזהה של פעולה ממושכת (LRO) שאפשר להשתמש בו כדי למצוא את הפעולה ברשימה Operations.
כדי לעקוב אחרי התקדמות פעולת הדחיסה, בתפריט הניווט לוחצים על Operations.
C++
כדי להפעיל דחיסות באופן פרוגרמטי באמצעות ספריית הלקוח של C++:
void Compact(google::cloud::spanner::Client client) {
namespace spanner = ::google::cloud::spanner;
spanner::SqlStatement select("CALL compact_all()");
auto rows = client.ExecuteQuery(statement);
using RowType = std::tuple<std::string>;
auto rows = client.ExecuteQuery(std::move(select));
for (auto& row : spanner::StreamOf<RowType>(rows)) {
if (!row) throw std::move(row).status();
std::cout << "Long-running operation ID: " << std::get<0>(*row) << "\n";
}
}
אתם יכולים לבדוק את ההתקדמות של פעולה ממושכת במסד נתונים. אפשר גם לבטל את בקשת הדחיסה הגדולה שמתבצעת באמצעות מזהה ה-LRO. למידע נוסף, ראו ביטול פעולה ממושכת במסד נתונים.