本文說明如何在 Spanner 資料庫中手動觸發主要壓縮作業。
Spanner 的多項儲存空間相關功能 (例如分級儲存空間或資料欄引擎),必須先在整個資料庫執行主要壓縮作業,才能完全啟用。根據預設,所有資料表每七天會自動執行一次主要壓縮。也就是說,您可能需要等待最多七天,才能完整使用新功能。如要立即使用新功能,可以手動觸發主要壓縮作業。
壓縮程序是長時間執行的作業 (LRO)。
定價
手動觸發主要壓縮作業時,Spanner 執行個體的 CPU 使用率會暫時提高。如果需要額外的運算能力來抵銷 CPU 使用率增加,費用就會增加。
效能
主要壓縮作業會在背景執行。不過,如果執行個體的 CPU 用量持續偏高,壓縮工作負載可能會干擾其他重要作業。在這種情況下,您可以暫時擴充執行個體,確保壓縮期間效能穩定。
手動觸發主要壓縮作業
Google Cloud 控制台
開啟 Google Cloud 控制台,然後選取執行個體。
選取資料庫。
在導覽選單中,點選「Spanner Studio」。
按一下「 新增 SQL 編輯器分頁」或「 新增分頁」,開啟新分頁。
根據資料庫方言,執行下列其中一個指令來啟動壓縮:
GoogleSQL
CALL compact_all();PostgreSQL
CALL spanner.compact_all();這項作業會傳回長時間執行的作業 (LRO) ID,您可以使用該 ID 在「作業」清單中尋找作業。
如要監控壓縮作業進度,請在導覽選單中點按「Operations」(作業)。
C++
如要使用 C++ 用戶端程式庫以程式輔助方式觸發壓縮作業,請執行下列步驟:
void Compact(google::cloud::spanner::Client client) {
namespace spanner = ::google::cloud::spanner;
spanner::SqlStatement select("CALL compact_all()");
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 ID 取消進行中的主要壓縮要求。詳情請參閱「取消長時間執行的資料庫作業」。