Esta es nuestra entrega de febrero para Servicio Index Advisor después de corregir algunos de los errores encontrados. Tenemos previsto seguir improvisando el servicio Index Advisor(¿De qué se trata?). Las correcciones en Index Advisor que normalmente vería en la próxima versión de mantenimiento ahora estarán disponibles para usted cada mes.
¿Para quién es? y ¿Cuándo utilizarlo?
http://index-advisor.couchbase.com/
A costa de repetirme,
Este servicio proporcionará recomendaciones sobre índices para ayudar a los administradores de bases de datos, desarrolladores y arquitectos a optimizar el rendimiento de las consultas y cumplir los acuerdos de nivel de servicio.
Este servicio le resultará útil si
- Quiere evitar leer el creación de índices normasCompréndalos y aplíquelos para encontrar los índices adecuados para su consulta/consultas/carga de trabajo.
- Aún no desea descargar la última versión del servidor Couchbase 6.5.
- ¿Está utilizando un versión anterior de Couchbase (versión 5.5,6.0) y necesitas ayuda para crear los índices adecuados para tus consultas.
- Desea generar consejos para los índices sin crear un cubo o cargar el esquema o los datos.
¿Qué hay de nuevo?
Incluso si usted tiene el servidor Couchbase Server 6.5 descargado y puede utilizar Index Advisor desde Query Workbench, este Index Advisor es una versión más reciente (sin un gran aspecto de interfaz de usuario), pero con los siguientes defectos corregidos.
1. Asesoramiento sobre índices en el espacio virtual de claves
2. El Index Advisor admite el espacio de claves virtual para las sentencias de borrado/fusión/actualización.
Con estas dos correcciones, una consulta como
1 |
aconsejar borrar DESDE aa donde tipo="cerveza" ; |
que solía dar
1 2 3 4 5 6 7 8 9 10 |
<span estilo="color: #ff0000">[ { "#operator": "Aconsejar", "consejos": { "#operator": "IndexAdvice", "adviseinfo": [] }, "consulta": "delete FROM aa where type="cerveza\" ;" } ]</span> |
ahora da
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
{ "resultados": [ { "#operator": "Aconsejar", "consejos": { "#operator": "IndexAdvice", "adviseinfo": { "índices_recomendados": { "índices_de_cobertura": [ { "declaración_índice": "CREATE INDEX adv_type ON `aa`(`type`)", "keyspace_alias": "aa" } ], "índices": [ { "declaración_índice": "CREATE INDEX adv_type ON `aa`(`type`)", "keyspace_alias": "aa", "recomendando_regla": "Las claves de índice siguen el orden de los tipos de predicado: 2. igualdad/nulo/falta". } ] } } }, "consulta": "delete FROM aa where type="cerveza\" ;" } ] } |
3. Index Advisor para eliminar el identificador en la expresión Meta()
Para una consulta del tipo:
1 |
SELECCIONAR * DESDE `cerveza-muestra` d donde SPLIT(meta(d).id, ":")[0] como "%cafe" |
obtendríamos
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<span estilo="color: #ff0000">{ "adviseResult": [ { "índices_actuales": [ { "declaración_índice": "CREATE PRIMARY INDEX beer_primary ON `cerveza-muestra`", "keyspace_alias": "cerveza-muestra_d" } ], "índices_recomendados": { "índices": [ { "declaración_índice": "CREATE INDEX adv_split_meta_d_id_0 ON `beer-sample`(split((meta(`d`).`id`), ':')[0])", "keyspace_alias": "cerveza-muestra_d", "recomendando_regla": "Las claves de índice siguen el orden de los tipos de predicado: 9. índice de función". } ] } } ] }</span> |
Ahora lo hemos modificado a:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
{ "resultados": [ { "#operator": "Aconsejar", "consejos": { "#operator": "IndexAdvice", "adviseinfo": { "índices_recomendados": { "índices": [ { "declaración_índice": "CREATE INDEX adv_split_meta_self_id_0 ON `cerveza-muestra`(split((<span style="color: #3366ff">meta(`self`)</span>.`id`), ':')[0])", "keyspace_alias": "cerveza-muestra_d", "recomendando_regla": "Las claves de índice siguen el orden de los tipos de predicado: 9. como." } ] } } }, "consulta": "SELECT * FROM `beer-sample` d where SPLIT(meta(d).id, \":\")[0] like \"%cafe\"" } ] } |
para un mejor uso.
4. Consulta: Función de aviso mensaje confuso
Se han sustituido un montón de mensajes de error confusos por explicaciones más verbales y claras.
5. El uso de advise en una consulta que tiene la palabra clave USE index devuelve un error incorrecto
1 |
aconsejar seleccione id,url,dirección,título,ciudad,nombre,país,me gusta_público de cubo0 <fuerte>utilice índice (def_primary)</fuerte> donde algunos p en me gusta_público satisface p como "Ge%" FIN Y tipo = "hotel" pedir por id, url, dirección, título, ciudad DESC, nombre, país |
utilizado para dar
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<span estilo="color: #ff0000">[ { "#operator": "Aconsejar", "consejos": { "#operator": "IndexAdvice", "adviseinfo": [ { "índices_recomendados": "No hay recomendación de índice en este momento: no se ha encontrado keyspace". } ] }, "consulta": "select id,url,dirección,título,ciudad,nombre,país,public_likes from bucket0 use index (def_primary) where some p in public_likes satisfies p like \"Ge%\" END AND type = \"hotel\" order by id, url, address, title, city DESC, name, country" } ]</span> |
ahora da
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
{ "resultados": [ { "#operator": "Aconsejar", "consejos": { "#operator": "IndexAdvice", "adviseinfo": { "índices_recomendados": { "índices_de_cobertura": [ { "declaración_índice": "CREATE INDEX adv_type_DISTINCT_public_likes_id_url_city_name_title_address_country_public_likes ON `bucket0`(`type`,DISTINCT ARRAY `p` FOR p in `public_likes` END,`id`,`url`,`city`,`name`,`title`,`address`,`country`,`public_likes`)", "keyspace_alias": "bucket0" } ], "índices": [ { "declaración_índice": "CREATE INDEX adv_type_DISTINCT_public_likes ON `bucket0`(`type`,DISTINCT ARRAY `p` FOR p in `public_likes` END)", "keyspace_alias": "bucket0", "recomendando_regla": "Las claves de índice siguen el orden de los tipos de predicado: 2. igualdad/nulo/falta, 6. predicado de matriz". } ] } } }, "consulta": "select id,url,dirección,título,ciudad,nombre,país,public_likes from bucket0 use index (def_primary) where some p in public_likes satisfies p like \"Ge%\" END AND type = \"hotel\" order by id, url, address, title, city DESC, name, country" } ] } |
También se han añadido algunas pequeñas mejoras.
Pruébalo y cualquier problema que veas con los índices recomendados por Index Advisor Service, puedes añadirlo como comentario a este blog
Más información sobre la función Index Advisor:
https://www.couchbase.com/blog/index-advisor-service/
https://www.couchbase.com/blog/n1ql-index-advisor-improve-query-performance-and-productivity/
https://www.couchbase.com/blog/index-advisor-for-query-workload/
https://docs.couchbase.com/server/6.5/n1ql/n1ql-language-reference/advise.html
https://docs.couchbase.com/server/6.5/n1ql/n1ql-language-reference/advisor.html
https://docs.couchbase.com/server/6.5/tools/query-workbench.html#index-advisor