Este é o nosso lançamento de fevereiro para Serviço de consultor de índices depois de corrigir alguns dos erros encontrados. Planejamos continuar melhorando o serviço Index Advisor(O que é isso?). As correções no Index Advisor que você normalmente veria na próxima versão de manutenção agora estarão disponíveis para você todos os meses.
Para quem ele serve? e Quando você deve usá-lo?
http://index-advisor.couchbase.com/
Ao custo de me repetir,
Esse serviço fornecerá recomendações de índices para ajudar DBAs, desenvolvedores e arquitetos a otimizar o desempenho das consultas e atender aos SLAs.
Esse serviço será útil se você:
- Deseja evitar a leitura do criação de índices regrasCompreendê-los e implementá-los para encontrar os índices apropriados para sua consulta/consultas/carga de trabalho.
- Ainda não deseja fazer o download do servidor Couchbase 6.5 mais recente.
- Está usando um versão mais antiga do Couchbase (versão 5.5, 6.0) e precisa de ajuda para criar os índices certos para suas consultas.
- Deseja gerar conselhos para índices sem criar um bucket ou fazer upload do esquema ou dos dados.
O que há de novo?
Mesmo que você tenha feito o download do servidor Couchbase Server 6.5 e possa usar o Index Advisor do Query Workbench, esse Index Advisor é uma versão mais recente (sem uma interface de usuário de ótima aparência), mas com os seguintes defeitos corrigidos.
1. Aviso de índice no espaço de chave virtual
2. Index Advisor para dar suporte ao espaço de chave virtual para instruções de exclusão/fusão/atualização
Com essas duas correções, uma consulta como
1 |
aconselhar excluir DE aa onde tipo="cerveja" ; |
que costumava dar
1 2 3 4 5 6 7 8 9 10 |
<extensão estilo="color: #ff0000">[ { "#operator": "Aconselhar", "aconselhamento": { "#operator": "IndexAdvice", "adviseinfo": [] }, "query" (consulta): "delete FROM aa where type=\"beer\" ;" } ]</extensão> |
agora dá
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": "Aconselhar", "aconselhamento": { "#operator": "IndexAdvice", "adviseinfo": { "recommended_indexes" (índices recomendados): { "covering_indexes": [ { "index_statement" (declaração de índice): "CREATE INDEX adv_type ON `aa`(`type`)", "keyspace_alias": "aa" } ], "indexes" (índices): [ { "index_statement" (declaração de índice): "CREATE INDEX adv_type ON `aa`(`type`)", "keyspace_alias": "aa", "recommending_rule" (regra de recomendação): "As chaves de índice seguem a ordem dos tipos de predicado: 2. igualdade/nulo/ausência." } ] } } }, "query" (consulta): "delete FROM aa where type=\"beer\" ;" } ] } |
3. Index Advisor para remover o identificador na expressão Meta()
Para uma consulta como:
1 |
SELECT * DE `cerveja-amostra` d onde DIVIDIR(meta(d).id, ":")[0] como "%cafe" |
obteríamos
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<extensão estilo="color: #ff0000">{ "adviseResult": [ { "current_indexes": [ { "index_statement" (declaração de índice): "CREATE PRIMARY INDEX beer_primary ON `beer-sample`", "keyspace_alias": "beer-sample_d" } ], "recommended_indexes" (índices recomendados): { "indexes" (índices): [ { "index_statement" (declaração de índice): "CREATE INDEX adv_split_meta_d_id_0 ON `beer-sample`(split((meta(`d`).`id`), ':')[0])", "keyspace_alias": "beer-sample_d", "recommending_rule" (regra de recomendação): "As chaves de índice seguem a ordem dos tipos de predicado: 9. índice de função." } ] } } ] }</extensão> |
Agora modificamos isso para:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
{ "resultados": [ { "#operator": "Aconselhar", "aconselhamento": { "#operator": "IndexAdvice", "adviseinfo": { "recommended_indexes" (índices recomendados): { "indexes" (índices): [ { "index_statement" (declaração de índice): "CREATE INDEX adv_split_meta_self_id_0 ON `beer-sample`(split((<span style="cor: #3366ff">meta(`self`)</span>.`id`), ':')[0])", "keyspace_alias": "beer-sample_d", "recommending_rule" (regra de recomendação): "As chaves de índice seguem a ordem dos tipos de predicado: 9. like." } ] } } }, "query" (consulta): "SELECT * FROM `beer-sample` d where SPLIT(meta(d).id, \":\")[0] like \"%cafe\"" } ] } |
para melhor utilização.
4. Consulta: Aconselhar função de mensagem confusa
Várias mensagens de erro confusas foram substituídas por explicações mais detalhadas e claras.
5. O uso de advise em uma consulta que tem a palavra-chave USE index retorna um erro incorreto
1 |
aconselhar selecionar id,url,endereço,título,cidade,nome,país,public_likes de balde0 <forte>uso índice (def_primary)</forte> onde alguns p em public_likes satisfaz p como "Ge%" FIM E tipo = "hotel" ordem por id, url, endereço, título, cidade DESC, nome, país |
usado para dar
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<extensão estilo="color: #ff0000">[ { "#operator": "Aconselhar", "aconselhamento": { "#operator": "IndexAdvice", "adviseinfo": [ { "recommended_indexes" (índices recomendados): "Nenhuma recomendação de índice neste momento: nenhum espaço-chave encontrado." } ] }, "query" (consulta): "select id,url,address,title,city,name,country,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" } ]</extensão> |
agora dá
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": "Aconselhar", "aconselhamento": { "#operator": "IndexAdvice", "adviseinfo": { "recommended_indexes" (índices recomendados): { "covering_indexes": [ { "index_statement" (declaração de í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" } ], "indexes" (índices): [ { "index_statement" (declaração de índice): "CREATE INDEX adv_type_DISTINCT_public_likes ON `bucket0`(`type`,DISTINCT ARRAY `p` FOR p in `public_likes` END)", "keyspace_alias": "bucket0", "recommending_rule" (regra de recomendação): "As chaves de índice seguem a ordem dos tipos de predicado: 2. igualdade/nulo/ausência, 6. predicado de matriz." } ] } } }, "query" (consulta): "select id,url,address,title,city,name,country,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" } ] } |
Também foram adicionados mais alguns aprimoramentos menores.
Experimente e, se tiver algum problema com os índices recomendados pelo Index Advisor Service, você pode adicioná-lo como um comentário a este blog
Mais informações sobre o recurso 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