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