Ce document explique comment déclencher manuellement une compaction majeure dans une base de données Spanner.
Plusieurs fonctionnalités liées au stockage dans Spanner, telles que le stockage par niveau ou le moteur en colonnes, nécessitent une compaction majeure à l'échelle de la base de données avant d'être entièrement activées. Par défaut, les compactions majeures sont effectuées automatiquement sur toutes les tables sur des périodes de sept jours. Cela signifie que vous devrez peut-être attendre jusqu'à sept jours pour qu'une nouvelle fonctionnalité soit entièrement disponible. Pour que les nouvelles fonctionnalités soient disponibles immédiatement, vous pouvez déclencher manuellement une compaction majeure.
Le processus de compaction est une opération de longue durée.
Tarifs
Le déclenchement d'une compaction majeure augmente temporairement la capacité de calcul sur l'instance Spanner. Cela peut entraîner une augmentation des coûts.
Performances
Les compactions majeures s'exécutent en tant qu'opérations en arrière-plan. Toutefois, si votre instance présente une utilisation intensive et constante du processeur, la charge de travail de compaction peut interférer avec d'autres opérations critiques. Dans ce cas, vous pouvez augmenter temporairement la taille de l'instance pour garantir des performances stables pendant la compaction.
Déclencher manuellement une compaction majeure
Google Cloud Console
Ouvrez la Google Cloud console et sélectionnez votre instance.
Sélectionnez une base de données.
Dans le menu de navigation, cliquez sur Spanner Studio.
Ouvrez un nouvel onglet en cliquant sur Nouvel onglet d'éditeur SQL ou Nouvel onglet.
Appelez la commande suivante pour lancer la compaction :
CALL compact_all();Cette opération renvoie un ID d'opération de longue durée que vous pouvez utiliser pour trouver l'opération dans la liste Opérations.
Pour surveiller la progression de l'opération de compaction, cliquez sur Opérations dans le menu de navigation.
C++
Pour déclencher des compactions de manière automatisée à l'aide de la bibliothèque 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";
}
}
Vous pouvez vérifier la progression d'une opération de base de données de longue durée. Vous pouvez également annuler la demande de compaction majeure en cours à l'aide de l'ID d'opération de longue durée. Pour en savoir plus, consultez Annuler une opération de base de données de longue durée.