在 Spanner 資料庫中手動觸發主要壓縮作業

本文說明如何手動觸發 Spanner 資料庫中的主要壓縮作業。

Spanner 中有幾項與儲存空間相關的功能 (例如層級儲存空間或資料欄引擎),必須先完成資料庫範圍內的主要壓縮作業,才能完全啟用。根據預設,所有資料表每七天會自動進行一次主要壓縮作業。也就是說,新功能最多可能需要七天才能全面開放使用。如要立即使用新功能,可以手動觸發主要壓縮作業。

壓縮程序是長時間執行的作業 (LRO)

定價

觸發主要壓縮作業時,Spanner 執行個體的運算能力會暫時增加。這可能會導致費用增加。

效能

主要壓縮作業會以背景作業的形式執行。不過,如果執行個體的 CPU 使用量持續偏高,壓縮工作負載可能會干擾其他重要作業。在這種情況下,您可以暫時調高執行個體的規模,確保壓縮期間效能穩定。

手動觸發主要壓縮作業

Google Cloud 控制台

  1. 開啟 Google Cloud 控制台並選取執行個體。

    前往 Spanner 執行個體

  2. 選取資料庫。

  3. 在導覽選單中,按一下「Spanner Studio」

  4. 按一下「開啟新的 SQL 編輯器分頁」或「開啟新分頁」,開啟新分頁。

  5. 叫用下列指令來啟動壓縮作業:

    CALL compact_all();
    

    這項作業會傳回長時間執行作業 (LRO) ID,您可以使用該 ID 在「作業」清單中尋找作業。

  6. 如要監控壓縮作業進度,請在導覽選單中點選「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 ID 取消進行中的主要壓縮要求。詳情請參閱「取消長時間執行的資料庫作業」。