En esta página se describe y se explica cómo funciona el almacenamiento por niveles en Spanner. Esta función se admite tanto en bases de datos con dialecto GoogleSQL como en bases de datos con dialecto PostgreSQL.
El almacenamiento por niveles de Spanner es una función de almacenamiento totalmente gestionada que te permite elegir si quieres almacenar tus datos en unidades de estado sólido (SSD) o en unidades de disco duro (HDD). De forma predeterminada, si no usas el almacenamiento por niveles, tus datos se almacenan en almacenamiento SSD. En función de la frecuencia con la que uses o accedas a los datos, puedes usar el almacenamiento por niveles y almacenar datos en unidades SSD y HDD.
- El almacenamiento SSD es la opción más eficiente (más consultas por segundo) y rentable para la mayoría de los casos prácticos. Debes usarlo para almacenar datos activos con un alto rendimiento de lectura y escritura, así como datos que requieran un acceso con baja latencia.
- El almacenamiento en HDD es adecuado para conjuntos de datos grandes que no sean sensibles a la latencia, a los que no se acceda con frecuencia o si el coste del almacenamiento es un factor importante.
El almacenamiento por niveles te permite aprovechar tanto el almacenamiento en SSD, que admite el alto rendimiento de los datos activos, como el almacenamiento en HDD, que admite el acceso a datos poco frecuentes a un coste más bajo.
Elegir entre almacenamiento SSD y HDD
En la siguiente tabla se muestran las diferencias y similitudes entre el almacenamiento SSD y HDD. Si tienes dudas, te recomendamos que elijas el almacenamiento SSD.
Almacenamiento en SSD | Espacio de almacenamiento en HDD | |
---|---|---|
Casos prácticos objetivo | Datos que requieren un alto rendimiento de lectura y escritura, y un acceso a los datos con baja latencia | Conjuntos de datos grandes que no son sensibles a la latencia o a los que se accede con poca frecuencia |
Rendimiento esperado por nodo Configuraciones regionales |
Hasta 22.500 CPS de lectura Hasta 3500 CPS de escritura |
Hasta 1500 CPS de lectura hasta 3500 CPS de escritura |
Rendimiento esperado por nodo Configuraciones de dos regiones y multirregionales |
Hasta 15.000 CPS de lectura por región Hasta 2700 CPS de escritura |
Hasta 1000 CPS de lectura por región Hasta 2700 CPS de escritura |
Operaciones admitidas | Leer, escribir, actualizar y eliminar | Leer, escribir, actualizar y eliminar |
Usa escrituras optimizadas para el rendimiento para aumentar el rendimiento de escritura más allá de los números de la tabla. Para obtener más información, consulta el artículo Vista general del rendimiento.
Ventajas
El almacenamiento por niveles ofrece las siguientes ventajas al permitirte usar almacenamiento SSD y HDD:
- Reducción significativa del coste total de propiedad: el almacenamiento en HDD ofrece una opción más económica para conjuntos de datos grandes que no son sensibles a la latencia o a los que se accede con poca frecuencia.
- Facilidad de gestión: ofrece un servicio de niveles totalmente gestionado sin la complejidad de las canalizaciones adicionales y la lógica de división.
- Experiencia unificada y coherente: proporciona acceso unificado a los datos y un único conjunto de métricas en los datos activos y los datos inactivos (mutables).
- Rendimiento mejorado: mejora el rendimiento de las consultas organizando los datos en diferentes grupos de localidad, lo que proporciona localidad y aislamiento de datos en las columnas. Los datos del mismo grupo de localidad se almacenan físicamente cerca unos de otros.
Cómo funciona el almacenamiento por niveles
De forma predeterminada, cuando creas una instancia, los datos solo se almacenan en almacenamiento SSD. Del mismo modo, los datos de las instancias actuales solo se almacenan en almacenamiento SSD.
Si decides usar el almacenamiento por niveles para almacenar algunos datos en un almacenamiento HDD, debes crear un grupo de localidad, que se usa para definir la política de almacenamiento por niveles de los datos de tu esquema. Cuando creas un grupo de localidades, puedes definir el tipo de almacenamiento, ya sea ssd
o hdd
. También puedes definir la cantidad de tiempo que los datos se almacenan en el almacenamiento SSD antes de que se muevan al almacenamiento HDD. Una vez transcurrido el tiempo especificado, Spanner migra los datos al almacenamiento en HDD durante su ciclo de compactación normal, que suele producirse en un plazo de siete días a partir del momento especificado. Esto se conoce como política de almacenamiento por niveles basada en la antigüedad. Cuando se usa una política de almacenamiento por niveles basada en la antigüedad, el tiempo mínimo que deben almacenarse los datos en SSD antes de que se muevan al almacenamiento en HDD es de una hora.
Una vez que hayas definido tus grupos de localidad, cuando crees tus tablas, podrás definir la política de almacenamiento por niveles a nivel de base de datos, tabla, columna o índice secundario. La política de almacenamiento por niveles determina cómo y dónde se almacenan los datos. Para obtener instrucciones, consulta Crear y gestionar grupos de localidades.
Copia de seguridad y restauración
Puedes crear copias de seguridad y restaurar tus datos con las copias de seguridad de Spanner.
La copia de seguridad contiene toda la información del esquema de almacenamiento, incluido INFORMATION_SCHEMA.LOCALITY_GROUP_OPTIONS
, que especifica el tipo de almacenamiento de cada grupo de localidades. Para restaurar una copia de seguridad que contenga grupos de localidad en una instancia nueva, la instancia de destino debe tener la edición Enterprise o Enterprise Plus de Spanner.
Data Boost
Puedes usar Spanner Data Boost para acceder a los datos almacenados en SSD o HDD. Para consultar datos en un disco duro, se usa la capacidad de carga del disco duro de la instancia, que forma parte de tu capacidad de computación.
Índices de búsqueda
La búsqueda en todo el texto y los índices vectoriales heredan el grupo de localidad que se haya definido en el objeto de base de datos.
Observabilidad
Las siguientes funciones de observabilidad están disponibles para el almacenamiento por niveles.
Métricas de Cloud Monitoring
Spanner proporciona las siguientes métricas para ayudarte a monitorizar el uso del almacenamiento por niveles y los datos con Cloud Monitoring:
spanner.googleapis.com/instance/storage/used_bytes
(Almacenamiento total): muestra el número total de bytes de datos almacenados en el almacenamiento SSD y HDD.spanner.googleapis.com/instance/storage/combined/limit_bytes
: muestra el límite de almacenamiento combinado de SSD y HDD.spanner.googleapis.com/instance/storage/combined/limit_bytes_per_processing_unit
: muestra el límite de almacenamiento combinado de SSD y HDD de cada unidad de procesamiento.spanner.googleapis.com/instance/storage/combined/utilization
: muestra el uso combinado del almacenamiento SSD y HDD en comparación con el límite de almacenamiento combinado.spanner.googleapis.com/instance/disk_load
: muestra el uso del disco duro en porcentaje. Si tu instancia alcanza el 100% de carga del disco HDD, experimentarás un aumento significativo de la latencia.
Si tienes consultas que filtran métricas por storage_class:ssd
, debes quitar el filtro para ver el uso del disco duro.
Para obtener más información sobre cómo monitorizar tus recursos de Spanner, consulta los artículos Monitorizar instancias con estadísticas del sistema y Monitorizar instancias con Cloud Monitoring.
Esquema de información
INFORMATION_SCHEMA.LOCALITY_GROUP_OPTIONS
contiene la lista de grupos de localidad y opciones de tu base de datos de Spanner. Incluye información sobre el grupo de localidades default
. Para obtener más información, consulta locality_group_options
para bases de datos con dialecto GoogleSQL y locality_group_options
para bases de datos con dialecto PostgreSQL.
Tablas de estadísticas integradas
Las siguientes tablas de estadísticas integradas están disponibles para las bases de datos que usan almacenamiento por niveles:
SPANNER_SYS.TABLE_SIZES_STATS_1HOUR
: muestra el uso del almacenamiento en HDD y SSD de cada tabla de tu base de datos.SPANNER_SYS.TABLE_SIZES_STATS_PER_LOCALITY_GROUP_1HOUR
: muestra el uso del almacenamiento HDD y SSD de cada grupo de localidades de tu base de datos.
Para obtener más información, consulta Estadísticas de tamaños de tablas.
Las tablas de estadísticas de consultas y de estadísticas de lecturas tienen la siguiente columna relacionada con el almacenamiento por niveles:
AVG_DISK_IO_COST
: el coste medio de esta consulta en términos de carga de disco HDD de Spanner. Usa este valor para comparar los costes de E/S de HDD relativos entre las lecturas que ejecutas en la base de datos. Un valor más alto indica que estás usando más carga de disco duro y que tu consulta puede ser más lenta que si se ejecutara en un SSD. Además, si la carga del disco duro está al máximo, el rendimiento de tus consultas podría verse aún más afectado.
Para obtener más información, consulta Estadísticas de consultas y Estadísticas de lecturas.
Precios
No se aplican cargos adicionales por usar el almacenamiento por niveles. Se te cobra el precio estándar de Spanner por la cantidad de capacidad de computación que usa tu instancia y la cantidad de almacenamiento que usa tu base de datos. Los datos almacenados en SSD y HDD se facturan según sus respectivas tarifas de almacenamiento. No se te cobrará por mover datos entre el almacenamiento SSD y el HDD. Para consultar datos en un disco duro, se usa la capacidad de carga del disco duro de la instancia, que forma parte de los precios de la capacidad de computación. Para obtener más información, consulta los precios de Spanner.
Siguientes pasos
- Más información sobre los grupos de localidades
- Consulta cómo crear y gestionar grupos de localidades.
- Más información sobre cómo optimizar las consultas con la inserción de predicados de marca de tiempo