在 Spanner 数据库中手动触发主要压缩

本文档介绍了如何在 Spanner 数据库中手动触发主要压缩。

Spanner 中的多项存储相关功能(例如分层存储或列式引擎)在完全启用之前,需要先进行数据库级的主要压缩。默认情况下,系统会在所有表上每隔 7 天自动执行一次主要压缩。这意味着,您可能需要等待最多 7 天才能完全使用新功能。如需立即使用新功能,您可以手动触发 major 压缩。

压缩过程是一项长时间运行的操作 (LRO)

价格

触发主要压缩会暂时增加 Spanner 实例的计算容量。这可能会导致费用增加。

性能

主要压缩作为后台操作运行。不过,如果实例的 CPU 使用率一直很高,压缩工作负载可能会干扰其他关键操作。在这种情况下,您可以暂时扩缩实例,以确保在压缩期间性能稳定。

手动触发 major 压缩

Google Cloud 控制台

  1. 打开 Google Cloud 控制台,然后选择您的实例。

    前往 Spanner 实例

  2. 选择数据库。

  3. 在导航菜单中,点击 Spanner Studio

  4. 点击 新的 SQL 编辑器标签页 新标签页以打开新标签页。

  5. 调用以下命令以启动压缩:

    CALL compact_all();
    

    此操作会返回一个长时间运行的操作 (LRO) ID,您可以使用该 ID 在操作列表中查找相应操作。

  6. 如需监控压缩操作的进度,请在导航菜单中点击操作

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 取消正在进行的主要压缩请求。如需了解详情,请参阅取消长时间运行的数据库操作