Consulta SQL++ / N1QL

Asesor de índices para cargas de trabajo de consulta

Visión general

Como la segunda característica de Index Advisor lanzada en Couchbase server 6.5 (Developer Preview), la función Advisor extiende el alcance de asesorar en una sola consulta a proporcionar recomendaciones de índice para la carga de trabajo de consulta y soporte en el manejo de sesiones. En este artículo, haremos un breve repaso de cómo funciona de estas dos formas diferentes.

Función de asesor sobre la carga de trabajo

La función de asesor funciona en los siguientes pasos:

    1. Tome como entrada una sola consulta o una carga de trabajo compuesta por varias consultas.
    2. Procesar cada consulta individual única con recomendación de índice.
    3. Fusiona y genera los índices actuales/recomendados para toda la carga de trabajo.

Sintaxis:

SELECCIONE ASESOR("consulta")

SELECT ASESOR(["consulta1", "consulta2", "consulta3″...])

El ejemplo siguiente muestra el escenario en el que la carga de trabajo de la consulta procede de system:completed_requests:

De forma similar a la sentencia ADVISE, la salida de la función ADVISOR() consta de tres partes:

    • Índices_actuales_utilizados

Esta sesión resume los índices utilizados actualmente con la correspondiente lista de sentencias de consulta y el recuento de ejecuciones de cada consulta.

    • Índices_recomendados

Esta sesión proporciona información sobre los índices recomendados en función de los predicados de la cláusula WHERE/ON para toda la carga de trabajo.

    • Índices de cobertura recomendados

Aquí se enumerarán las recomendaciones de índices de cobertura aplicables a la carga de trabajo de la consulta.

Función asesora en la gestión de sesiones

La función de gestión de sesiones permite a los usuarios configurar por adelantado el asesor de índices para la carga de trabajo de la consulta entrante en los siguientes pasos.

    • Definir las consultas de interés con propiedades específicas.
    • Inicializar una sesión para supervisar y recopilar la carga de trabajo de consulta que se ejecuta en un clúster durante un período de tiempo.
    • Invocar al asesor de índices para que realice un análisis posterior asíncrono de la carga de trabajo de consulta recopilada.
    • Extraer y procesar las recomendaciones de índices una vez finalizado todo el proceso.

Sintaxis de uso:

1. ASESOR( { "acción" : "inicio",

           "perfil": "john",

           "respuesta" : "3s",     

           "duración" : "1m" ,

           "query_count" : 200 } )

    • "acción": usuarios que deben configurarse para que la sesión continúe: "iniciar", "detener", "obtener", "listar", "purgar", "abortar".
    • "profile"(opcional) - el perfil de usuario especificado cuya consulta será de interés. Recogerá las consultas ejecutadas por cualquiera si no se establece.
    • "response"(opcional) - el umbral de tiempo establecido para que la consulta se ejecute más de, por defecto es 0s.
    • "duration"(obligatorio) - cuánto tiempo debe estar funcionando la sesión para recoger la consulta. Las unidades de tiempo válidas son "ns", "us" (o "µs"), "ms", "s", "m", "h".
    • "query_count"(opcional) - El límite superior para el número de consultas que recogerá la sesión. El límite de consultas es 4000 por nodo de consulta. Si los usuarios esperan recopilar más que eso, necesitan modificar la configuración global antes de inicializar la sesión por:

curl http://localhost:port/admin/settings -d '{"completed-limit":10000}' -u usuario:contraseña"

Una vez que la sesión se haya inicializado correctamente, se devolverá un nombre de sesión único como referencia, tal y como se muestra a continuación, en al mismo tiempo, se programará una tarea asíncrona de invocación al asesor de índices para realizar el análisis, que se ejecutará inmediatamente después de la finalización de la recopilación de la carga de trabajo.

2. ASESOR( { "acción" : "obtener",

           "sesión": “06fcdefe-f864-48f5-a79b-b2f3345a6745” } )

Una vez finalizado el proceso de análisis, el usuario puede ejecutar otra función advisor() para recuperar los resultados de recomendación de índices utilizando el nombre de sesión correspondiente.

3. ASESOR( { "acción" : "purgar",

           "sesión": “06fcdefe-f864-48f5-a79b-b2f3345a6745” } )

Cuando el índice que recomienda resultados para una sesión concreta ya no es necesario, el usuario puede optar por purgarlo para ahorrar espacio.

La sesión menos reciente también se vaciará automáticamente una vez alcanzada la capacidad de la caché.

4. ASESOR({ "acción": "lista",

    "status": "completado"})

        Esta función puede proporciona la lista de sesiones activas, sesiones completadas y todas las sesiones existentes. La entrada "estado" puede ser "activo", "finalizado" o "todos".

La información de salida procede de system:tasks_cache. Veamos un ejemplo para comprender la información relevante sobre Index Advisor:

    • clase: esta tarea procede del asesor de índices.
    • retraso: cuánto durará la fase de recogida de consultas.
    • name: nombre de la sesión igual al anterior.
    • estado: el estado de la sesión: ["completada", "programada", "en ejecución"].

 

5. ASESOR( { "acción" : "detener",

           "sesión": “06fcdefe-f864-48f5-a79b-b2f3345a6745” } )

El usuario puede dejar de recoger consultas y adelantar el análisis del índice para que se ejecute inmediatamente.

6. ASESOR( { "acción" : "abortar",

           "sesión": “06fcdefe-f864-48f5-a79b-b2f3345a6745” } )

Los usuarios también pueden cancelar una sesión sin ejecutar el análisis.

 

Resumen

La función Advisor funciona con una sola consulta y con varias consultas, y proporciona información sobre los índices utilizados actualmente, los índices recomendados y los índices de cobertura recomendados para toda la carga de trabajo de la consulta.

La gestión de sesiones del asesor permite a los usuarios crear una sesión para recopilar las consultas que cumplan los requisitos especificados durante un periodo de tiempo e invocar al asesor de índices para que les proporcione recomendaciones.

Como hay mucho margen de mejora en la funcionalidad y el rendimiento de ambas funciones, seguiremos explorando y recibiendo comentarios para optimizar el diseño en el próximo paso.

Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Autor

Publicado por Chang Liu

Ingeniero de software en el equipo de consulta N1QL

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.