El tamaño de las instancias de Hologres se define en incrementos de Compute Unit (CU). Dado que Hologres utiliza una arquitectura con separación de cómputo y almacenamiento, el almacenamiento escala de forma independiente. Por lo tanto, elegir una especificación de instancia consiste realmente en seleccionar la capacidad de cómputo adecuada para su carga de trabajo.
Esta página explica cómo la cantidad de CU se relaciona con las conexiones, la cantidad de shards y el rendimiento de las consultas. Así podrá elegir una especificación inicial y saber cuándo ajustarla.
Conceptos clave
CU (Compute Unit): es la unidad base de recursos para las instancias de Hologres. Cada 16 CU corresponden a un nodo de cómputo.
Shard: es la unidad de particionamiento de datos dentro de Hologres. Cada shard gestiona las solicitudes de lectura y escritura de una porción de los datos. Los shards dentro del mismo Table Group distribuyen los datos de cada tabla para que las uniones entre tablas ubicadas en el mismo lugar eviten mover datos entre shards (una unión local). Cuando los datos abarcan varios shards, un operador de redistribución los reorganiza a través de la red, lo cual genera sobrecarga de programación.
Table Group: es una agrupación lógica que determina cómo se organizan los shards. Todas las tablas del mismo Table Group comparten la misma distribución de shards, lo que permite realizar uniones locales entre ellas.
Nodo frontend: es la capa de acceso que gestiona las conexiones entrantes. El total de conexiones de una instancia equivale al máximo de conexiones por nodo frontend multiplicado por la cantidad de nodos frontend.
Cómo afecta la cantidad de shards al rendimiento
El comportamiento de los shards difiere según el tipo de carga de trabajo:
|
Workload |
Effect of more shards |
|
Escrituras y actualizaciones de datos |
Mayor rendimiento: las escrituras se paralelizan entre los shards. |
|
Consultas puntuales (con poda de shards) |
Mayor concurrencia: cada consulta accede a un solo shard. |
|
Consultas OLAP (Online Analytical Processing) |
Rendimientos decrecientes: varios shards deben coordinarse, lo que añade sobrecarga de programación. |
|
Tablas orientadas a filas |
Mejor rendimiento de lectura gracias a la distribución natural entre los shards. |
Después de escalar horizontalmente una instancia, contar con más recursos de cómputo mejora únicamente la concurrencia de las consultas. En la mayoría de los casos, mantenga la cantidad de shards sin cambios, a menos que necesite específicamente un mayor rendimiento de escritura. Si escala horizontalmente a menos de cinco veces el tamaño original, no ajuste la cantidad de shards.
No es posible modificar la cantidad máxima de conexiones. Cuando una instancia se escala horizontal o verticalmente, los límites de conexión se ajustan automáticamente. Sin embargo, la cantidad predeterminada de shards de las bases de datos existentes no cambia durante el escalado; actualícela manualmente si es necesario. Las bases de datos nuevas utilizan la cantidad predeterminada de shards correspondiente a la nueva especificación.
Cuándo ajustar la especificación
Antes de consultar la tabla de recomendaciones, compruebe si la especificación actual es realmente el cuello de botella. A continuación se muestran las señales que indican que probablemente sea necesario cambiar la especificación:
|
Signal |
Likely action |
|
La cantidad de conexiones está cerca del límite de la instancia o ya lo alcanzó |
Escale horizontalmente (esto añade nodos frontend y eleva el límite de conexiones). |
|
El rendimiento de escritura no alcanza la tasa de ingesta |
Escale horizontalmente y luego aumente la cantidad de shards de las bases de datos existentes. |
|
La latencia de las consultas OLAP es alta, pero la concurrencia es baja |
Escale horizontalmente para obtener más nodos de cómputo; no aumente la cantidad de shards. |
|
La concurrencia de las consultas puntuales se estancó |
Escale horizontalmente y luego aumente la cantidad de shards si la poda de shards está activa. |
Ejecute la siguiente instrucción para comparar el uso actual de conexiones con el límite:
-- Returns the maximum connections for a single frontend node.
-- Multiply by the number of frontend nodes to get the instance total.
show max_connections;
Si no observa ninguna de estas señales, es probable que la especificación actual sea suficiente.
Especificaciones recomendadas según el volumen de datos
La especificación adecuada depende de más factores que solo la cantidad de filas. También influyen la frecuencia de acceso, el volumen de datos consultados, la carga de trabajo de cómputo (consultas puntuales frente a analítica), el rendimiento de escritura y la cantidad de tablas dentro de un Table Group. Utilice la siguiente tabla como punto de partida.
Estas recomendaciones son pautas, no límites estrictos. Una tabla con poco volumen de datos puede ejecutarse en una instancia con muchos shards, mientras que una tabla grande puede funcionar en una instancia con un solo shard. Ajuste la cantidad de shards a su objetivo de concurrencia y mantenga los datos lo bastante concentrados para evitar una sobrecarga innecesaria por reorganización.
|
Total data size |
Recommended spec |
Recommended shard count |
Workload fit |
|
Menos de 40 millones de filas |
32 núcleos o más |
10–20 |
Desarrollo y pruebas. No es adecuado para pruebas de estrés. |
|
De 40 millones a 400 millones de filas |
64 núcleos o más |
20–40 |
Cargas de trabajo simples: rendimiento de escritura moderado, sin concurrencia mixta de OLAP y consultas puntuales. |
|
De 400 millones a 4 mil millones de filas |
128 núcleos o más |
40–80 |
Equilibrio entre escrituras y consultas. Punto de partida predeterminado para producción. |
|
De 4 mil millones a 40 mil millones de filas |
256 núcleos o más |
80–240 |
Escritura de alto rendimiento u OLAP a gran escala. Utilice varios Table Groups; divídalos por cohesión de negocio o volumen de datos, y especifique el Table Group explícitamente al crear las tablas. |
|
De 40 mil millones a 400 mil millones de filas |
512 núcleos o más |
160–400 |
OLAP a muy gran escala o cargas de trabajo multiinquilino. Utilice varios Table Groups (con las mismas indicaciones anteriores). Reserve las cantidades altas de shards solo para tablas muy grandes, ya que las tablas estándar no obtienen ventajas de esto. |
Recursos predeterminados por especificación de instancia
Desde el 25 de abril de 2022, las instancias de propósito general admiten de 512 CU a 1,024 CU. Para especificaciones mayores, envíe un ticket. Antes de actualizar a una especificación mayor, actualice la instancia a V1.1.58 o posterior.
Las instancias de grupo de cómputo admiten cualquier especificación de 32 CU a 8,192 CU sin necesidad de abrir un ticket.
Cada 16 CU corresponden a un nodo de cómputo.
Para especificaciones de 512 CU o menos: la cantidad de nodos de cómputo es igual a la cantidad de nodos frontend.
Total de conexiones máximas = conexiones máximas por nodo frontend × cantidad de nodos frontend. Los valores entre paréntesis muestran primero la cifra por nodo y luego la cantidad de nodos.
|
Instance spec |
Compute nodes |
Default shard count |
Max connections (V2.1 and earlier) |
Max connections (V2.2 and later) |
Reserved connections for Superuser (V1.1 and later) |
|
32 CU |
2 |
20 |
256 (128 × 2) |
512 (256 × 2) |
10 (5 × 2) |
|
De 48 a 80 CU |
De 3 a 5 |
40 |
128 × cantidad de nodos de cómputo |
256 × cantidad de nodos de cómputo |
5 × cantidad de nodos de cómputo |
|
De 96 a 112 CU |
De 6 a 7 |
60 |
128 × cantidad de nodos de cómputo |
256 × cantidad de nodos de cómputo |
5 × cantidad de nodos de cómputo |
|
De 128 a 192 CU |
De 8 a 12 |
80 |
128 × cantidad de nodos de cómputo |
256 × cantidad de nodos de cómputo |
5 × cantidad de nodos de cómputo |
|
De 208 a 352 CU |
De 13 a 22 |
120 |
128 × cantidad de nodos de cómputo |
256 × cantidad de nodos de cómputo |
5 × cantidad de nodos de cómputo |
|
De 368 a 992 CU |
De 23 a 62 |
160 |
128 × cantidad de nodos de cómputo |
256 × cantidad de nodos de cómputo |
5 × cantidad de nodos de cómputo |
Qué cambia automáticamente al escalar
Cuando escala una instancia horizontal o verticalmente, los siguientes cambios ocurren automáticamente:
|
Configuration |
Behavior during scaling |
|
Conexiones máximas |
Se ajustan automáticamente para coincidir con la nueva especificación. |
|
Cantidad predeterminada de shards (bases de datos nuevas) |
Se aplica el valor predeterminado de la nueva especificación. |
|
Cantidad predeterminada de shards (bases de datos existentes) |
No cambia; actualícela manualmente si es necesario. |
Esto significa que, tras un escalado horizontal, las bases de datos existentes conservan su cantidad original de shards. Los nodos de cómputo adicionales mejoran la concurrencia de las consultas porque hay más núcleos procesando cada una. Actualice la cantidad de shards manualmente solo si necesita un mayor rendimiento de escritura o planea añadir muchos más datos.
Consulte y gestione las conexiones
Compruebe el límite actual de conexiones
Después de conectarse a una herramienta de desarrollo, ejecute la siguiente instrucción para consultar las conexiones máximas de un solo nodo frontend:
-- View the maximum connections for a single frontend node.
-- Connections are balanced across all frontend nodes.
show max_connections;
Multiplique el valor devuelto por la cantidad de nodos frontend para obtener el límite total de conexiones de la instancia.
Gestione las conexiones cuando se alcance el límite
Cada instancia reserva conexiones para el rol Superuser. Cuando se alcanza el límite de conexiones, un Superuser puede conectarse y usar SQL para consultar y liberar las conexiones inactivas, o bien escalar verticalmente la instancia. Para más detalles, consulte Connections.
Consulte y modifique la cantidad de shards
Escalar horizontalmente una instancia no cambia la cantidad de shards de las bases de datos existentes; ajústela manualmente si su carga de trabajo lo requiere. Aumente la cantidad de shards cuando necesite un mayor rendimiento de escritura. En las tablas orientadas a filas, tener más shards también mejora el rendimiento de lectura debido a la distribución natural de los datos.
Para ver las instrucciones, consulte Table Group and Shard Count user guide.
Pasos siguientes
Table Group and Shard Count user guide: cree Table Groups y ajuste la cantidad de shards.
Connections: supervise y libere las conexiones inactivas.