Todos los productos
Search
Centro de documentos

PolarDB:Distribución manual de solicitudes entre nodos de almacenamiento por filas y por columnas

Última actualización: Sep 05, 2026

Un clúster de PolarDB for MySQL HTAP puede atender cargas de trabajo OLTP y OLAP. Si ambos tipos de tráfico usan el mismo endpoint de clúster, las consultas de almacenamiento por filas pueden competir por recursos con las consultas analíticas. Para aislar el tráfico, configure endpoints de clúster separados. Restrinja uno a nodos de almacenamiento por filas para OLTP. Restrinja el otro a nodos de almacenamiento por columnas para OLAP. Dirija cada aplicación a su endpoint designado.

Cómo funciona el enrutamiento

PolarDB enruta las solicitudes a través de tres capas. Comprender el orden ayuda a decidir dónde intervenir cuando el enrutamiento no funciona como se espera.

Capa

Mecanismo

Alcance

1. Endpoint de clúster

Restringe los nodos a los que puede llegar un endpoint

Nivel de conexión

2. Optimización basada en costos

Selecciona un plan de ejecución de almacenamiento por filas o por columnas según el costo estimado

Nivel de sentencia (automático)

3. Hint de SQL

Fuerza un plan de ejecución específico y sobrescribe la optimización basada en costos

Nivel de sentencia (manual)

En condiciones normales, la capa 1 separa el tráfico OLTP del OLAP. La capa 2 selecciona el plan automáticamente. Use la capa 3 solo cuando la selección automática produzca resultados inesperados para una sentencia específica.

Las reglas de enrutamiento predeterminadas son:

  • Solicitudes de escritura OLTP: siempre se enrutan al nodo principal.

  • Solicitudes de lectura OLTP: se enrutan a nodos de almacenamiento por filas de solo lectura o al nodo principal.

  • Solicitudes de lectura OLAP: se enrutan a nodos de almacenamiento por columnas de solo lectura.

独立

Configure los endpoints de clúster

Configure dos endpoints de clúster. Uno será para el tráfico OLTP. El otro será para el tráfico OLAP. Para obtener instrucciones sobre cómo crear y gestionar endpoints de clúster, consulte Manage the endpoints of a cluster.

Endpoint OLTP

Elija uno de los modos que se muestran a continuación:

Modo

Configuración de nodos

Read-only

Agregue únicamente nodos de almacenamiento por filas de solo lectura a la lista de nodos seleccionada.

Read/Write (Automatic Read/Write Splitting)

Agregue como mínimo un nodo de almacenamiento por filas de solo lectura. Si Primary Node Accepts Read Requests está establecido en Yes, las solicitudes de lectura también se distribuyen al nodo principal.

Nota

En el modo Read/Write (Automatic Read/Write Splitting), todas las solicitudes de escritura van al nodo principal. Esto ocurre independientemente de si el nodo principal está en la lista de nodos seleccionada.

Endpoint OLAP

Las cargas de trabajo OLAP solo incluyen solicitudes de lectura. Use el modo Read-only y agregue como mínimo un nodo de almacenamiento por columnas de solo lectura a la lista de nodos seleccionada.

Sobrescriba el enrutamiento con hints de SQL

Cuando una sentencia llega a un nodo de almacenamiento por columnas de solo lectura, PolarDB decide el plan de ejecución. Para ello, compara el costo de ejecución estimado con el parámetro loose_cost_threshold_for_imci. Si el costo supera el umbral, PolarDB usa el plan de almacenamiento por columnas. Este plan se basa en In-Memory Column Index (IMCI). De lo contrario, usa el plan de almacenamiento por filas.

Para sobrescribir esta selección automática en una sentencia específica, agregue un hint de SQL. Un hint de SQL se aplica solo a la sentencia a la que está asociado. No tiene efecto sobre otras sentencias de la misma conexión ni de otras conexiones.

Nota

Para MySQL 5.7.7 y versiones anteriores, agregue la opción --comments al conectarse al motor de la base de datos. De lo contrario, el cliente elimina los hints antes de enviar la sentencia. Ejecute mysql --version para comprobar la versión del cliente.

Fuerce un plan de ejecución de almacenamiento por columnas

Establezca el umbral de costo en 0 agregando /*+ SET_VAR(cost_threshold_for_imci=0) */. Esto fuerza el plan de almacenamiento por columnas, independientemente del costo estimado real.

/*FORCE_IMCI_NODES*/EXPLAIN SELECT /*+ SET_VAR(cost_threshold_for_imci=0) */ COUNT(*) FROM t1 WHERE t1.a > 1;
Nota

Dentro de /*+SET_VAR()*/, omita el prefijo loose_ del nombre del parámetro. Si usa loose_cost_threshold_for_imci en el hint, este no surte efecto. Use cost_threshold_for_imci en su lugar.

Fuerce un plan de ejecución de almacenamiento por filas

Agregue /*+ SET_VAR(USE_IMCI_ENGINE=OFF) */ para omitir por completo el motor de almacenamiento por columnas.

EXPLAIN SELECT /*+ SET_VAR(USE_IMCI_ENGINE=OFF) */ COUNT(*) FROM t1 WHERE t1.a > 1;