Neste documento, explicamos como acionar manualmente uma compactação principal em um banco de dados do Spanner.
Vários recursos relacionados ao armazenamento no Spanner, como armazenamento por níveis ou mecanismo colunar, dependem de uma compactação principal em todo o banco de dados antes de serem totalmente ativados. Por padrão, as compactações principais ocorrem automaticamente em todas as tabelas durante períodos de sete dias. Isso significa que você pode esperar até sete dias para que um novo recurso esteja totalmente disponível. Para disponibilizar novos recursos imediatamente, acione manualmente uma compactação principal.
O processo de compactação é uma operação de longa duração (LRO).
Preços
Acionar uma compactação principal aumenta temporariamente a capacidade de computação na instância do Spanner. Isso pode resultar em custos maiores.
Desempenho
As compactações principais são executadas como operações em segundo plano. No entanto, se a instância tiver um uso intenso e consistente da CPU, a carga de trabalho de compactação poderá interferir em outras operações críticas. Nesses casos, é possível fazer o escalonar verticalmente vertical temporário da instância para garantir um desempenho estável durante a compactação.
Acionar manualmente uma compactação principal
Console do Google Cloud
Abra o console do Google Cloud e selecione sua instância.
Selecione um banco de dados.
No menu de navegação, clique em Spanner Studio.
Abra uma nova guia clicando em Nova guia do editor de SQL ou Nova guia.
Chame o comando a seguir para iniciar a compactação:
CALL compact_all();Essa operação retorna um ID de operação de longa duração (LRO) que pode ser usado para encontrar a operação na lista Operações.
Para monitorar o progresso da operação de compactação, no menu de navegação, clique em Operações.
C++
Para acionar compactações de forma programática usando a biblioteca de cliente 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";
}
}
É possível verificar o progresso de uma operação de banco de dados de longa duração. Também é possível cancelar a solicitação de compactação principal em andamento usando o ID da LRO. Para mais informações, consulte Cancelar uma operação de banco de dados de longa duração.