本文档介绍了如何在 Spanner 数据库中手动触发主要压缩。
Spanner 中的多项存储相关功能(例如分层存储或列式引擎)在完全启用之前,需要先进行数据库级的主要压缩。默认情况下,系统会在所有表上每隔 7 天自动执行一次主要压缩。这意味着,您可能需要等待最多 7 天才能完全使用新功能。如需立即使用新功能,您可以手动触发 major 压缩。
压缩过程是一项长时间运行的操作 (LRO)。
价格
触发主要压缩会暂时增加 Spanner 实例的计算容量。这可能会导致费用增加。
性能
主要压缩作为后台操作运行。不过,如果实例的 CPU 使用率一直很高,压缩工作负载可能会干扰其他关键操作。在这种情况下,您可以暂时扩缩实例,以确保在压缩期间性能稳定。
手动触发 major 压缩
Google Cloud 控制台
打开 Google Cloud 控制台,然后选择您的实例。
选择数据库。
在导航菜单中,点击 Spanner Studio。
点击 新的 SQL 编辑器标签页或 新标签页以打开新标签页。
调用以下命令以启动压缩:
CALL compact_all();此操作会返回一个长时间运行的操作 (LRO) ID,您可以使用该 ID 在操作列表中查找相应操作。
如需监控压缩操作的进度,请在导航菜单中点击操作。
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 取消正在进行的主要压缩请求。如需了解详情,请参阅取消长时间运行的数据库操作。