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

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

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

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

价格

手动触发主要压缩会暂时增加 Spanner实例的 CPU 利用率。如果需要额外的 计算容量 来抵消 CPU 利用率的这种增加,则会增加 费用。

性能

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

手动触发主要压缩

Google Cloud 控制台

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

    前往 Spanner 实例

  2. 选择数据库。

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

  4. 点击加号图标,然后点击 新的 SQL 编辑器标签页 新标签页 以打开新标签页。

  5. 根据您的数据库方言,运行以下某个命令来启动压缩:

    GoogleSQL

    CALL compact_all();
    

    PostgreSQL

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