Práctica de diseño de índice global de Phoenix

Visión de conjunto

El índice global es una característica importante de Phoenix. El uso razonable del índice secundario puede reducir la latencia de las consultas y hacer un uso completo de los recursos del clúster. Este artículo describirá cómo diseñar y usar índices de manera eficiente.

Descripción del índice global

La raíz del índice global es almacenar los datos del índice de la tabla de datos a través de una tabla HBase separada. Usamos el siguiente ejemplo para ver la relación entre los datos del índice y los datos de la tabla principal.

- Crear tabla de datos CREAR TABLA DATA_TABLE ( 
  A VARCHAR PRIMARY KEY, 
  B VARCHAR, 
  C INTEGER, 
  D INTEGER); - Crear índice CREAR INDICE B_IDX ON DATA_TABLE (B) INCLUDE (C); - Insertar datos UPSERT INTO DATA_TABLE VALUES ('A' , 'B', 1,2);

Al escribir datos en la tabla principal, los datos de índice también se sincronizarán con la tabla de índice. La clave principal en la tabla de índice será el valor combinado de la columna de índice y la clave principal de la tabla de datos. La columna de inclusión se almacena en la columna normal de la tabla de índice. El propósito es hacer que la consulta sea más eficiente. Usted solo es necesario consultar la tabla de índice una vez para obtener los datos., Sin tener que volver atrás y verificar la tabla principal. El proceso se muestra en la figura siguiente.

imagen

La tabla Phoenix es la tabla HBase, y HBase Rowkey se almacena en orden lexicográfico de datos binarios, lo que significa que cuanto mayor sea el grado de coincidencia del prefijo de la clave de fila, más fácil será ordenarlos juntos.

Diseño de índice global

Continuamos usando DATA_TABLE como una tabla de ejemplo y creamos el siguiente índice compuesto. Hemos mencionado antes que la clave Row en la tabla de índice se almacena lexicográficamente ¿Qué tipo de consulta es adecuada para tal estructura de índice?

CREATE INDEX B_C_D_IDX ON DATA_TABLE (B, C, D);
Toma el operador = como ejemplo para todas las condiciones de campo:

imagen

Nota: Las condiciones y de la consulta de la tabla anterior no tienen que estar en el mismo orden que los campos de combinación de índices y pueden combinarse arbitrariamente.

En el uso real, solo recomendamos usar 1 ~ 4, seguir el principio de coincidencia de prefijos y evitar activar la tabla de barrido. Para las condiciones 5 ~ 7, debe escanear toda la tabla para filtrar los datos que cumplen estas condiciones, por lo que no se recomienda encarecidamente.

otro

  • Para ordenar por campos o agrupar por campos, los campos de índice secundario aún se pueden usar para acelerar las consultas.

  • Trate de evitar construir más tablas de índice diseñando racionalmente la clave principal de la tabla de datos, porque cuantas más tablas de índice se escriban, más serias son.

  • No se puede usar el índice global después de usar la función ROW_TIMESTAMP

  • Utilice de forma adecuada las funciones de salazón para las tablas de índice para mejorar el rendimiento de la escritura de consultas y evitar puntos calientes.

imagen


Supongo que te gusta

Origin blog.51cto.com/15060465/2679398
Recomendado
Clasificación