{"id":7547,"date":"2019-08-15T22:45:26","date_gmt":"2019-08-16T05:45:26","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=7547"},"modified":"2025-06-13T17:21:57","modified_gmt":"2025-06-14T00:21:57","slug":"index-advisor-for-query-workload","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/index-advisor-for-query-workload\/","title":{"rendered":"Consultor de \u00edndice para carga de trabalho de consulta"},"content":{"rendered":"<h3>Vis\u00e3o geral<\/h3>\n<p>Como o segundo recurso do Index Advisor lan\u00e7ado no servidor Couchbase 6.5 (Developer Preview), a fun\u00e7\u00e3o Advisor amplia o escopo do aconselhamento em uma \u00fanica consulta para fornecer recomenda\u00e7\u00f5es de \u00edndice para a carga de trabalho da consulta e suporte no tratamento da sess\u00e3o. Neste artigo, faremos uma breve an\u00e1lise de como ele funciona dessas duas maneiras diferentes.<\/p>\n<h3>Fun\u00e7\u00e3o de consultor sobre carga de trabalho<\/h3>\n<p>A fun\u00e7\u00e3o Advisor funciona nas seguintes etapas:<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\n<li>Tome como entrada uma \u00fanica consulta ou uma carga de trabalho de consulta que consista em v\u00e1rias consultas.<\/li>\n<li>Processar cada consulta individual exclusiva com recomenda\u00e7\u00e3o de \u00edndice.<\/li>\n<li>Mesclar e gerar os \u00edndices atuais\/recomendados para toda a carga de trabalho.<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<p>Sintaxe:<\/p>\n<p style=\"padding-left: 40px;\"><em>SELECT ADVISOR(\"query\")<\/em><\/p>\n<p style=\"padding-left: 40px;\"><em>SELECT ADVISOR([\"consulta1\", \"consulta2\", \"consulta3\u2033...])<\/em><\/p>\n<p>O exemplo abaixo mostra o cen\u00e1rio em que a carga de trabalho da consulta \u00e9 de system:completed_requests:<\/p>\n<pre class=\"lang:default decode:true\">SELECT ADVISOR((\r\n    SELECT RAW statement\r\n    FROM system:completed_requests));<\/pre>\n<pre class=\"lang:default decode:true\">[\r\n  {\r\n    \"$1\": {\r\n      \"current_used_indexes\": [\r\n        {\r\n          \"index\": \"CREATE INDEX def_type ON `travel-sample`(`type`)\",\r\n          \"statements\": [\r\n            {\r\n              \"run_count\": 2,\r\n              \"statement\": \"select * from `travel-sample` where type is not null\"\r\n            }\r\n          ]\r\n        },\r\n        {\r\n          \"index\": \"CREATE PRIMARY INDEX def_primary ON `travel-sample`\",\r\n          \"statements\": [\r\n            {\r\n              \"run_count\": 1,\r\n              \"statement\": \"select id from `travel-sample` where id &lt; 10\"\r\n            }\r\n          ]\r\n        }\r\n      ],\r\n      \"recommended_covering_indexes\": [\r\n        {\r\n          \"index\": \"CREATE INDEX adv_id ON `travel-sample`(`id`)\",\r\n          \"statements\": [\r\n            {\r\n              \"run_count\": 1,\r\n              \"statement\": \"select id from `travel-sample` where id &lt; 10\"\r\n            }\r\n          ]\r\n        }\r\n      ],\r\n      \"recommended_indexes\": [\r\n        {\r\n          \"index\": \"CREATE INDEX adv_id ON `travel-sample`(`id`)\",\r\n          \"statements\": [\r\n            {\r\n              \"run_count\": 1,\r\n              \"statement\": \"select id from `travel-sample` where id &lt; 10\"\r\n            }\r\n          ]\r\n        }\r\n      ]\r\n    }\r\n  }\r\n]<\/pre>\n<p>Semelhante ao comando ADVISE, a sa\u00edda da fun\u00e7\u00e3o ADVISOR() consiste em tr\u00eas partes:<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Current_used_indexes<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p style=\"padding-left: 80px;\">Essa sess\u00e3o resume os \u00edndices usados atualmente com a lista correspondente de instru\u00e7\u00f5es de consulta e a contagem de execu\u00e7\u00e3o de cada consulta.<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>\u00cdndices recomendados<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p style=\"padding-left: 80px;\">Esta sess\u00e3o fornece informa\u00e7\u00f5es sobre os \u00edndices recomendados com base em predicados na cl\u00e1usula WHERE\/ON para toda a carga de trabalho.<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>\u00cdndices_de_cobertura recomendados<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p style=\"padding-left: 80px;\">A recomenda\u00e7\u00e3o do \u00edndice de cobertura que se aplica \u00e0 carga de trabalho da consulta ser\u00e1 listada aqui.<\/p>\n<h3>Fun\u00e7\u00e3o de consultor sobre o tratamento de sess\u00f5es<\/h3>\n<p>A fun\u00e7\u00e3o de tratamento de sess\u00e3o permite que os usu\u00e1rios configurem o consultor de \u00edndices com anteced\u00eancia para a carga de trabalho da consulta recebida nas etapas a seguir.<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Defina as consultas de interesse com propriedades espec\u00edficas.<\/li>\n<li>Inicialize uma sess\u00e3o para monitorar e coletar a carga de trabalho de consulta em execu\u00e7\u00e3o em um cluster por um per\u00edodo de tempo.<\/li>\n<li>Invoque o consultor de \u00edndice para realizar a an\u00e1lise da carga de trabalho da consulta coletada de forma ass\u00edncrona posteriormente.<\/li>\n<li>Extrair e processar as recomenda\u00e7\u00f5es do \u00edndice ap\u00f3s a conclus\u00e3o de todo o processo.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Sintaxe de uso:<\/span><\/p>\n<p style=\"padding-left: 40px;\"><span style=\"font-weight: 400;\">1. ADVISOR( { <em>\"action\" : \"start\",<\/em><\/span><\/p>\n<p style=\"padding-left: 80px;\"><em><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400;\">\u00a0\"profile\": \"john\",<\/span><\/em><\/p>\n<p style=\"padding-left: 80px;\"><em><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400;\">\u00a0\"resposta\" : \"3s\",\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><\/em><\/p>\n<p style=\"padding-left: 80px;\"><em><span style=\"font-weight: 400;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"font-weight: 400;\">\"dura\u00e7\u00e3o\" : \"1m\" ,<\/span><\/em><\/p>\n<p style=\"padding-left: 80px;\"><i><span style=\"font-weight: 400;\"><em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"query_count\" : 200<\/em> <\/span><\/i><span style=\"font-weight: 400;\">} )<\/span><\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>\"action\"- usu\u00e1rios a serem definidos para que a sess\u00e3o prossiga: \"start\" (iniciar), \"stop\" (parar), \"get\" (obter), \"list\" (listar), \"purge\" (limpar), \"abort\" (abortar).<\/li>\n<li><span style=\"font-weight: 400;\">\"profile\"(opcional) - o perfil de usu\u00e1rio especificado cuja consulta ser\u00e1 de interesse. Se n\u00e3o for definido, coletar\u00e1 as consultas executadas por qualquer pessoa.<\/span><\/li>\n<li><span style=\"font-weight: 400;\">\"response\" (opcional) - o limite de tempo definido para que a consulta seja executada por mais tempo; a configura\u00e7\u00e3o padr\u00e3o \u00e9 0s.<\/span><\/li>\n<li><span style=\"font-weight: 400;\">\"duration\" (obrigat\u00f3rio) - por quanto tempo a sess\u00e3o deve estar em execu\u00e7\u00e3o para coletar a consulta.  As unidades de tempo v\u00e1lidas s\u00e3o \"ns\", \"us\" (ou \"\u00b5s\"), \"ms\", \"s\", \"m\", \"h\".<\/span><\/li>\n<li><span style=\"font-weight: 400;\">\"query_count\"(opcional) - O limite superior para o n\u00famero de consultas que a sess\u00e3o coletar\u00e1. O query_limit \u00e9 4000 por n\u00f3 de consulta. Se os usu\u00e1rios esperam coletar mais do que isso, eles precisam modificar a configura\u00e7\u00e3o global antes de inicializar a sess\u00e3o:<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p style=\"padding-left: 120px;\"><em>&#8220;<\/em><em>curl https:\/\/localhost:port\/admin\/settings -d '{\"completed-limit\":10000}' -u user:password\"<\/em><\/p>\n<p style=\"padding-left: 40px;\"><span style=\"font-weight: 400;\">Ap\u00f3s a inicializa\u00e7\u00e3o bem-sucedida da sess\u00e3o, um nome de sess\u00e3o exclusivo ser\u00e1 retornado para refer\u00eancia, conforme mostrado abaixo, em<\/span><span style=\"font-weight: 400;\"> Ao mesmo tempo, uma tarefa ass\u00edncrona de invocar o consultor de \u00edndices para fazer a an\u00e1lise ser\u00e1 programada para ser executada imediatamente ap\u00f3s a conclus\u00e3o da coleta da carga de trabalho.<\/span><\/p>\n<pre class=\"lang:default decode:true\">[\r\n  {\r\n    \"$1\": {\r\n      \"session\": \"06fcdefe-f864-48f5-a79b-b2f3345a6745\"\r\n    }\r\n  }\r\n]<\/pre>\n<p style=\"padding-left: 40px;\">2. <span style=\"font-weight: 400;\">ADVISOR( { <em>\"action\" : \"get\",<\/em><\/span><\/p>\n<p style=\"padding-left: 80px;\"><span style=\"font-weight: 400;\"><em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"session\": \u201c06fcdefe-f864-48f5-a79b-b2f3345a6745\u201d<\/em> } )<\/span><\/p>\n<p style=\"padding-left: 40px;\"><span style=\"font-weight: 400;\">Ap\u00f3s a conclus\u00e3o do processo de an\u00e1lise, o usu\u00e1rio pode executar outra fun\u00e7\u00e3o advisor() para recuperar os resultados da recomenda\u00e7\u00e3o de \u00edndice usando o nome da sess\u00e3o correspondente.<\/span><\/p>\n<p style=\"padding-left: 40px;\">3. <span style=\"font-weight: 400;\">ADVISOR( { <em>\"action\" : \"purge\",<\/em><\/span><\/p>\n<p style=\"padding-left: 80px;\"><span style=\"font-weight: 400;\"><em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"session\": \u201c06fcdefe-f864-48f5-a79b-b2f3345a6745\u201d<\/em> } )<\/span><\/p>\n<p style=\"padding-left: 40px;\"><span style=\"font-weight: 400;\">Quando o \u00edndice que recomenda resultados para uma determinada sess\u00e3o n\u00e3o for mais necess\u00e1rio, o usu\u00e1rio poder\u00e1 optar por elimin\u00e1-lo para economizar espa\u00e7o. <\/span><\/p>\n<p style=\"padding-left: 40px;\"><span style=\"font-weight: 400;\">A sess\u00e3o menos recente tamb\u00e9m ser\u00e1 liberada automaticamente quando atingir a capacidade do cache.<\/span><\/p>\n<p style=\"padding-left: 40px;\">4. <span style=\"font-weight: 400;\">ADVISOR({ <em>\"action\" (a\u00e7\u00e3o): \"list\", <\/em><\/span><\/p>\n<p style=\"padding-left: 120px;\"><span style=\"font-weight: 400;\"><em>\u00a0 \u00a0 \"status\": \"completed\"<\/em>})<\/span><\/p>\n<p>\u00a0 \u00a0 \u00a0 \u00a0 Essa fun\u00e7\u00e3o pode<span style=\"font-weight: 400;\"> fornecem a lista de sess\u00f5es ativas no momento, sess\u00f5es conclu\u00eddas no momento e todas as sess\u00f5es existentes. A entrada para \"status\" pode ser uma das op\u00e7\u00f5es \"active\", \"completed\" e \"all\".<\/span><\/p>\n<p style=\"padding-left: 40px;\">As informa\u00e7\u00f5es de sa\u00edda s\u00e3o de system:tasks_cache. Vamos dar um exemplo para entender as informa\u00e7\u00f5es relevantes sobre o Index Advisor:<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>classe: essa tarefa vem do consultor de \u00edndices.<\/li>\n<li>delay: quanto tempo durar\u00e1 a fase de coleta de consultas.<\/li>\n<li>name: nome da sess\u00e3o igual ao anterior.<\/li>\n<li>estado: o status da sess\u00e3o: [\"completed\", \"schedule\", \"running\"].<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<pre class=\"lang:default decode:true\">[\r\n  {\r\n    \"$1\": [\r\n      {\r\n        \"tasks_cache\": {\r\n          \"class\": \"advisor\",\r\n          \"delay\": \"1m0s\",\r\n          \"id\": \"ea673d76-086f-5f27-86b2-9b016f56f2a0\",\r\n          \"name\": \"<span style=\"font-weight: 400;\">06fcdefe-f864-48f5-a79b-b2f3345a6745<\/span>\",\r\n          \"node\": \"127.0.0.1:8091\",\r\n          \"results\": [\r\n            {}\r\n          ],\r\n          \"startTime\": \"2019-07-23 16:11:13.616100068 -0700 PDT m=+96637.000928100\",\r\n          \"state\": \"completed\",\r\n          \"stopTime\": \"2019-07-23 16:11:14.186697742 -0700 PDT m=+96637.571525466\",\r\n          \"subClass\": \"analyze\",\r\n          \"submitTime\": \"2019-07-23 16:10:13.615964874 -0700 PDT m=+96577.000792768\"\r\n        }\r\n      }\r\n    ]\r\n  }\r\n]<\/pre>\n<p>&nbsp;<\/p>\n<p style=\"padding-left: 40px;\">5. <span style=\"font-weight: 400;\">ADVISOR( { <em>\"action\" : \"stop\",<\/em><\/span><\/p>\n<p style=\"padding-left: 80px;\"><span style=\"font-weight: 400;\"><em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"session\": \u201c06fcdefe-f864-48f5-a79b-b2f3345a6745\u201d<\/em> } )<\/span><\/p>\n<p style=\"padding-left: 40px;\">O usu\u00e1rio pode interromper antecipadamente a coleta de consultas e<span style=\"font-weight: 400;\">\u00a0antecipar a an\u00e1lise do \u00edndice para execu\u00e7\u00e3o imediata.<\/span><\/p>\n<p style=\"padding-left: 40px;\">6. <span style=\"font-weight: 400;\">ADVISOR( { <em>\"a\u00e7\u00e3o\" : \"abortar\",<\/em><\/span><\/p>\n<p style=\"padding-left: 80px;\"><span style=\"font-weight: 400;\"><em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"session\": \u201c06fcdefe-f864-48f5-a79b-b2f3345a6745\u201d<\/em> } )<\/span><\/p>\n<p style=\"padding-left: 40px;\">Os usu\u00e1rios tamb\u00e9m podem<span style=\"font-weight: 400;\"> cancelar uma sess\u00e3o sem executar a an\u00e1lise.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h3>Resumo<\/h3>\n<p><span style=\"font-weight: 400;\">A fun\u00e7\u00e3o Advisor funciona com uma \u00fanica consulta e com v\u00e1rias consultas e fornece informa\u00e7\u00f5es sobre os \u00edndices usados atualmente, os \u00edndices recomendados e os \u00edndices de cobertura recomendados para toda a carga de trabalho da consulta.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">O manuseio da sess\u00e3o do consultor permite que os usu\u00e1rios criem uma sess\u00e3o para coletar as consultas que atendem aos requisitos especificados por um per\u00edodo de tempo e invocar o consultor de \u00edndice para fornecer recomenda\u00e7\u00f5es para elas.<\/span><\/p>\n<p>Como h\u00e1 muito espa\u00e7o para melhorias na funcionalidade e no desempenho de ambas as fun\u00e7\u00f5es, continuaremos a explorar e receber feedbacks para otimizar o design na pr\u00f3xima etapa.<\/p>","protected":false},"excerpt":{"rendered":"<p>Overview As the second feature of Index Advisor released in Couchbase server 6.5 (Developer Preview), Advisor function extends the scope from advising on single query to providing index recommendations for query workload and support on session handling. In this article, [&hellip;]<\/p>","protected":false},"author":17714,"featured_media":7449,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1812],"tags":[2378],"ppma_author":[9088],"class_list":["post-7547","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-n1ql-query","tag-6-5"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.4 (Yoast SEO v26.4) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Index Advisor For Query Workload - The Couchbase Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/pt\/index-advisor-for-query-workload\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Index Advisor For Query Workload\" \/>\n<meta property=\"og:description\" content=\"Overview As the second feature of Index Advisor released in Couchbase server 6.5 (Developer Preview), Advisor function extends the scope from advising on single query to providing index recommendations for query workload and support on session handling. In this article, [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/index-advisor-for-query-workload\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2019-08-16T05:45:26+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T00:21:57+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/Transactions-alternative-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1400\" \/>\n\t<meta property=\"og:image:height\" content=\"553\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Chang Liu\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Chang Liu\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/index-advisor-for-query-workload\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/index-advisor-for-query-workload\/\"},\"author\":{\"name\":\"Chang Liu\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c43360951567e4b3bef754197f5e866b\"},\"headline\":\"Index Advisor For Query Workload\",\"datePublished\":\"2019-08-16T05:45:26+00:00\",\"dateModified\":\"2025-06-14T00:21:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/index-advisor-for-query-workload\/\"},\"wordCount\":798,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/index-advisor-for-query-workload\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/Transactions-alternative-1.jpg\",\"keywords\":[\"6.5\"],\"articleSection\":[\"SQL++ \/ N1QL Query\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/index-advisor-for-query-workload\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/index-advisor-for-query-workload\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/index-advisor-for-query-workload\/\",\"name\":\"Index Advisor For Query Workload - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/index-advisor-for-query-workload\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/index-advisor-for-query-workload\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/Transactions-alternative-1.jpg\",\"datePublished\":\"2019-08-16T05:45:26+00:00\",\"dateModified\":\"2025-06-14T00:21:57+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/index-advisor-for-query-workload\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/index-advisor-for-query-workload\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/index-advisor-for-query-workload\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/Transactions-alternative-1.jpg\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/Transactions-alternative-1.jpg\",\"width\":1400,\"height\":553},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/index-advisor-for-query-workload\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Index Advisor For Query Workload\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c43360951567e4b3bef754197f5e866b\",\"name\":\"Chang Liu\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/2eede623c7ed061e0426183cb9cac122\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d73d8b19010a13d5e2567a4051ea99cf60a37f9ff39d8197255739d72a030b3b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d73d8b19010a13d5e2567a4051ea99cf60a37f9ff39d8197255739d72a030b3b?s=96&d=mm&r=g\",\"caption\":\"Chang Liu\"},\"description\":\"Software Engineer in N1QL Query Team\",\"url\":\"https:\/\/www.couchbase.com\/blog\/pt\/author\/chang-liucouchbase-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Index Advisor For Query Workload - The Couchbase Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/pt\/index-advisor-for-query-workload\/","og_locale":"pt_BR","og_type":"article","og_title":"Index Advisor For Query Workload","og_description":"Overview As the second feature of Index Advisor released in Couchbase server 6.5 (Developer Preview), Advisor function extends the scope from advising on single query to providing index recommendations for query workload and support on session handling. In this article, [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/index-advisor-for-query-workload\/","og_site_name":"The Couchbase Blog","article_published_time":"2019-08-16T05:45:26+00:00","article_modified_time":"2025-06-14T00:21:57+00:00","og_image":[{"width":1400,"height":553,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/Transactions-alternative-1.jpg","type":"image\/jpeg"}],"author":"Chang Liu","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Chang Liu","Est. reading time":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/index-advisor-for-query-workload\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/index-advisor-for-query-workload\/"},"author":{"name":"Chang Liu","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c43360951567e4b3bef754197f5e866b"},"headline":"Index Advisor For Query Workload","datePublished":"2019-08-16T05:45:26+00:00","dateModified":"2025-06-14T00:21:57+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/index-advisor-for-query-workload\/"},"wordCount":798,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/index-advisor-for-query-workload\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/Transactions-alternative-1.jpg","keywords":["6.5"],"articleSection":["SQL++ \/ N1QL Query"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/index-advisor-for-query-workload\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/index-advisor-for-query-workload\/","url":"https:\/\/www.couchbase.com\/blog\/index-advisor-for-query-workload\/","name":"Index Advisor For Query Workload - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/index-advisor-for-query-workload\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/index-advisor-for-query-workload\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/Transactions-alternative-1.jpg","datePublished":"2019-08-16T05:45:26+00:00","dateModified":"2025-06-14T00:21:57+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/index-advisor-for-query-workload\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/index-advisor-for-query-workload\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/index-advisor-for-query-workload\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/Transactions-alternative-1.jpg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/Transactions-alternative-1.jpg","width":1400,"height":553},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/index-advisor-for-query-workload\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Index Advisor For Query Workload"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"Blog do Couchbase","description":"Couchbase, o banco de dados NoSQL","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"Blog do Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c43360951567e4b3bef754197f5e866b","name":"Chang Liu","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/2eede623c7ed061e0426183cb9cac122","url":"https:\/\/secure.gravatar.com\/avatar\/d73d8b19010a13d5e2567a4051ea99cf60a37f9ff39d8197255739d72a030b3b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d73d8b19010a13d5e2567a4051ea99cf60a37f9ff39d8197255739d72a030b3b?s=96&d=mm&r=g","caption":"Chang Liu"},"description":"Engenheiro de software na equipe de consultas N1QL","url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/chang-liucouchbase-com\/"}]}},"authors":[{"term_id":9088,"user_id":17714,"is_guest":0,"slug":"chang-liucouchbase-com","display_name":"Chang Liu","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/d73d8b19010a13d5e2567a4051ea99cf60a37f9ff39d8197255739d72a030b3b?s=96&d=mm&r=g","author_category":"","last_name":"Liu","first_name":"Chang","job_title":"","user_url":"","description":"Engenheiro de software na equipe de consultas N1QL"}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/7547","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/users\/17714"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=7547"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/7547\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/7449"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=7547"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=7547"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=7547"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=7547"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}