Traducción de Phoenix Explain Plan

 

Plan EXPLAIN
Un plan EXPLAIN le dice mucho acerca de cómo se
ejecutará una consulta de: un plan de implementación le dirá cómo plan de ejecución
Todas las consultas de rango de HBase que se ejecutarán
todas las consultas de rango de hbase se ejecutarán
Una estimación del número de bytes que se escanearán
estimar cuántos bytes se escanean
Una estimación del número de filas que se atravesarán
estimar cuántas filas se atravesarán
tiempo en el que se recopiló la información estimada anterior
para recopilar el tiempo de evaluación anterior Para
qué tabla de HBase se utilizará cada escaneo
Cada escaneo de la tabla usará
Qué operaciones (ordenar, fusionar, escanear, limitar) se ejecutan en el cliente versus el servidor.
En el cliente y el servidor , esa operación (ordenar, fusionar, escanear, limitar el número de columnas ) será ejecutado
Use un plan EXPLAIN para verificar cómo se ejecutará una consulta y considere reescribir consultas para cumplir con los siguientes objetivos: Use un plan EXPLAIN para verificar cómo se
ejecuta una consulta y considere los siguientes objetivos para reescribir la consulta:
Enfatice las operaciones en el servidor en lugar de que el cliente. Las operaciones del servidor se distribuyen en el clúster y operan en paralelo, mientras que las operaciones del cliente se ejecutan dentro del controlador JDBC de un solo cliente.
Se hace hincapié en la ejecución en el servidor, no en el cliente. Las operaciones del servidor se ejecutan simultáneamente a través de un clúster distribuido, mientras que los clientes se ejecutan a través de un solo controlador jdbc.
Utilice RANGE SCAN o SKIP SCAN siempre que sea posible en lugar de TABLE SCAN.
Utilice el rango de exploración y omita la exploración en lugar de la exploración de nivel de tabla.
Filtrar por columnas iniciales en la restricción de clave principal. Esto supone que ha diseñado la clave principal para dirigir con columnas de acceso frecuente o filtradas con frecuencia, como se describe en "Claves primarias", más arriba.
Filtre las columnas que dominan la clave principal.
Si es necesario, introduzca un índice local o un índice global que cubra su consulta.
Si es así, la introducción de índices locales y globales en su declaración de consulta cubriendo su
Si tiene un índice que cubre su consulta pero el optimizador no lo detecta, intente insinuando la consulta: SELECT / * + INDEX () * /…
Si su consulta contiene un índice, pero el optimizador no lo encuentra, puede intentar usar implícitamente select / * + index () * / Specify
Vea también: http: //phoenix.apache.org/language/index.html#explain

Anatomía de un
plan de
explicación plan de ejecución de análisis Un plan de explicación consta de líneas de texto que describen las operaciones que Phoenix realizará durante una consulta, utilizando los siguientes términos:
programa de interpretación de línea de texto operaciones realizadas por Phoenix composición explicativa de la consulta, los siguientes términos:
AGREGAR EN FILAS DISTINTAS ORDENADAS: agrega las filas devueltas mediante una operación como la suma. 

Si la columna se agrega mediante la operación, volverá a agregarse en diferentes filas ordenadas.
Cuando se usa ORDERED, la operación GROUP BY se aplica a la parte inicial de la restricción de clave primaria, lo que permite que la agregación se realice en su lugar en lugar de mantener todos los grupos distintos en la memoria del lado del servidor.
Cuando se usa ORDERED, GROUP BY La operación se aplica a la parte principal de la restricción de clave principal, lo que permite la agregación en la ubicación adecuada en lugar de mantener todos los diferentes grupos en la memoria del lado del servidor.
AGGREGATE INTO SINGLE ROW: agrega los resultados  en una sola fila utilizando una función agregada sin cláusula GROUP BY.
Sin el uso de un grupo por función agregada, devuelve el conjunto de resultados de polimerización de filas.
Por ejemplo, la instrucción count () devuelve una fila con el número total de filas que coinciden con la consulta.
Por ejemplo: recuento devuelve el número total de filas que coinciden con la condición de la consulta
CLIENTE: la operación se realizará en el lado del cliente. Es más rápido realizar la mayoría de las operaciones en el lado del servidor, por lo que debe considerar si hay una manera de reescribir la consulta para darle al servidor más trabajo por hacer.
CLIENTE - 手术 将Ejecutar en el cliente. La ejecución en el servidor será más rápida, por lo que debería considerar la reescritura para que el servicio funcione más.
FILTRAR POR expresión: devuelve solo los resultados que coinciden con la expresión.
El filtro FLETER solo devuelve los resultados que coinciden con la expresión.
ESCANEO COMPLETO SOBRE tableName: la operación escaneará todas las filas de la tabla especificada.
Escaneo de tabla completo, esta operación escaneará todas las filas de la tabla especificada Una línea
INNER-JOIN: la operación unirá varias tablas en las filas donde se cumple la condición de unión.
Inner join: esta operación utiliza condiciones de asociación para asociar varias tablas
MERGE SORT: realiza una clasificación de combinación en los resultados.
Merge sort- el conjunto de resultados Merge sort
RANGE SCAN OVER tableName […]: la información entre corchetes indica el inicio y el final de cada clave principal que se usa en la consulta. El
rango de escaneo de la tabla de nombre de tabla-los corchetes indican la información utilizada para el inicio y el final de la consulta .
ROUND ROBIN: cuando la consulta no contiene ORDER BY y, por lo tanto, las filas se pueden devolver en cualquier orden, el pedido ROUND ROBIN maximiza la paralelización en el lado del cliente. ROUND ROBIN: cuando la consulta no contiene un
orden por palabra clave, se devuelve El orden de las filas será Es aleatorio, y la programación
por turnos ejecutará el cliente en el paralelismo máximo x-CHUNK: describe cuántos subprocesos se utilizarán para la operación El paralelismo máximo se limita al número de subprocesos en el grupo de subprocesos. 
x-CHUNK-describe esto Cuántos subprocesos se utilizan para la operación. El número máximo de subprocesos paralelos en el grupo de subprocesos.
La paralelización mínima corresponde al número de regiones que tiene la tabla entre las filas de
inicio y finalización del escaneo. El número de fragmentos aumentará con un ancho de poste indicador más bajo, ya que hay más de un fragmento por región. Líneas de inicio y finalización de la tabla Entre , el número mínimo de particiones paralelas. Cada zona tiene varios bloques y, a medida que disminuye el ancho del poste guía, aumenta el número de bloques.
PARALLELx-WAY: describe cuántos escaneos paralelos se combinarán y ordenarán durante la operación PARALLELx-WAY: cuántos escaneos paralelos se
combinarán y ordenarán durante la operación .
SERIAL: algunas consultas se ejecutan en serie. Por ejemplo, una búsqueda de una sola fila o una consulta que filtra en la parte inicial de la clave principal y limita los resultados por debajo de un umbral configurable. En
serie: algunas consultas se ejecutan en serie. Por ejemplo, filtre la parte inicial de la clave principal y limite los resultados a una búsqueda de una sola fila o una consulta por debajo de un umbral configurable.
EST_BYTES_READ: proporciona una estimación del número total de bytes que se analizarán como parte de la ejecución de la consulta.
Número total de bytes para proporcionar parte de las estimaciones de ejecución de la consulta de exploración
EST_ROWS_READ: proporciona una estimación de la cantidad total de filas que se explorarán como parte de la ejecución de la consulta
para proporcionar una parte de la ejecución de exploración total de la estimación de la fila de consulta
EST_INFO_TS - epoch tiempo en milisegundos en el que se recopiló la información estimada tiempo en milisegundos
.
Ejemplo
+ ------------------------------------------------ -------------------------------------------------- ---------------------------------
| PLAN | EST_BYTES_READ | EST_ROWS_READ | EST_INFO_TS |
+ ------- -------------------------------------------------- -------------------------------------------------- ------------------------
| CLIENTE 36-CHUNK 237878 FILAS 6787437019 BYTES PARALELO 36-WAY FULL SCAN
| SOBRE exDocStoreb | 237878 | 6787437019 | 1510353318102 |
| PARALELO INNER-JOIN TABLA 0 (SALTAR FUSIÓN) | 237878 | 6787437019 | 1510353318102 |
| CLIENTE 36-CHUNK PARALELO RANGO DE 36 VÍAS ESCANEADO indx_exdocb 
| [0, '42ecf4abd4bd7e7606025dc8eee3de 6a3cc04418cbc2619ddc01f54d88d7 c3bf'] 
| - [0, '42ecf4abd4bd7e7606025dc8eee3de 6a3cc04418cbc2619ddc01f54d88d7 c3bg' | 237878 | 6787437019 | 1510353318102 |
| FILTRO DE SERVIDOR SÓLO POR PRIMERA LLAVE | 237878 | 6787437019 | 1510353318102 |
| SERVIDOR AGREGADO EN FILAS DISTINTAS ORDENADAS POR ["ID"] | 237878 | 6787437019 | 1510353318102 |
| CLIENTE MERGE SORT | 237878 | 6787437019 | 1510353318102 |
| FILTRO DE SERVIDOR DINÁMICO POR (A.CURRENT_TIMESTAMP, [A.ID] (http://a.id/)) 
    IN ((TMP.MCT, TMP.TID)) | 237878 | 6787437019 | 1510353318102 |
+ ------------------------------------------------- -------------------------------------------------- --------------------------------
JDBC Explain Plan API e información de estimaciones
También se puede acceder a la información que se muestra en la API del plan de explicación mediante programación a través de las interfaces JDBC estándar. Cuando la recopilación de estadísticas está habilitada para una tabla, el plan de explicación también proporciona una estimación del número de filas y bytes que una consulta va a escanear. Para obtener la información, puede usar las columnas correspondientes en el conjunto de resultados devuelto por la declaración del plan de explicación. Cuando la recopilación de estadísticas no está habilitada o si por alguna razón Phoenix no puede proporcionar la información estimada, las columnas devuelven un valor nulo. A continuación se muestra un ejemplo:

String explicaSql = "EXPLICAR SELECCIONAR * DESDE T";
Largo estimadoBytes = nulo;
Long EstimadoRows = nulo;
Estimaciones largasInfoTs = null;
try (Instrucción declaración = conn.createStatement (explicaSql)) {         int paramIdx = 1;         ResultSet rs = statement.executeQuery (explicaSql);         rs.next ();         EstimadoBytes =                 (largo) rs.getObject (PhoenixRuntime.EXPLAIN_PLAN_ESTIMATED_BYTES_READ_COLUMN);                 EstimadasRows         = (Long) rs.getObject (PhoenixRuntime.EXPLAIN_PLAN_ESTIMATED_ROWS_READ_COLUMN);         EstimaciónInfoTs =                 (largo) rs.getObject (PhoenixRuntime.EXPLAIN_PLAN_ESTIMATE_INFO_TS_COLUMN); }









https://phoenix.apache.org/explainplan.html

Por favor corríjame si la traducción es incorrecta, gracias

Supongo que te gusta

Origin blog.csdn.net/JHON07/article/details/95249478
Recomendado
Clasificación