En este documento, se explica cómo activar manualmente una compactación principal en una base de datos de Spanner.
Varias funciones relacionadas con el almacenamiento en Spanner, como el almacenamiento por niveles o el motor de columnas, dependen de una compactación principal en toda la base de datos antes de que se habiliten por completo. De forma predeterminada, las compactaciones principales se producen automáticamente en todas las tablas durante períodos de siete días. Esto significa que es posible que debas esperar hasta siete días para que una función nueva esté disponible por completo. Para que las funciones nuevas estén disponibles de inmediato, puedes activar manualmente una compactación principal.
El proceso de compactación es una operación de larga duración (LRO).
Precios
Activar una compactación importante aumenta temporalmente la capacidad de procesamiento en la instancia de Spanner. Esto podría generar costos adicionales.
Rendimiento
Las compactaciones principales se ejecutan como operaciones en segundo plano. Sin embargo, si tu instancia tiene un uso de CPU constantemente alto, la carga de trabajo de compactación podría interferir con otras operaciones críticas. En esos casos, puedes aumentar la escala de la instancia de forma temporal para garantizar un rendimiento estable durante la compactación.
Activa manualmente una compactación principal
Consola de Google Cloud
Abre la consola de Google Cloud y selecciona tu instancia.
Selecciona una base de datos.
En el menú de navegación, haz clic en Spanner Studio.
Para abrir una pestaña nueva, haz clic en Nueva pestaña del editor de SQL o Nueva pestaña.
Invoca el siguiente comando para iniciar la compactación:
CALL compact_all();Esta operación devuelve un ID de operación de larga duración (LRO) que puedes usar para encontrar la operación en la lista de Operaciones.
Para supervisar el progreso de la operación de compactación, haz clic en Operaciones en el menú de navegación.
C++
Para activar las compactaciones de forma programática con la biblioteca cliente de C++, haz lo siguiente:
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";
}
}
Puedes verificar el progreso de una operación de base de datos de larga duración. También puedes cancelar la solicitud de compactación principal en curso con el ID de LRO. Para obtener más información, consulta Cancela una operación de base de datos de larga duración.