{"id":16757,"date":"2025-01-10T12:24:23","date_gmt":"2025-01-10T20:24:23","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=16757"},"modified":"2025-07-08T09:15:45","modified_gmt":"2025-07-08T16:15:45","slug":"memory-management-couchbase-query-service","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/memory-management-couchbase-query-service\/","title":{"rendered":"Gerenciamento de mem\u00f3ria do servi\u00e7o de consulta no Couchbase"},"content":{"rendered":"<p>No Couchbase, o gerenciamento de mem\u00f3ria no servi\u00e7o de consulta \u00e9 fundamental para manter o servi\u00e7o eficiente e responsivo, especialmente porque o servi\u00e7o lida com um n\u00famero crescente de consultas simultaneamente. Sem o gerenciamento adequado da mem\u00f3ria, as coisas podem dar errado: consultas \u00e1vidas podem consumir muita mem\u00f3ria, e o uso combinado da mem\u00f3ria de v\u00e1rias consultas simult\u00e2neas pode sobrecarregar o servi\u00e7o, levando a um desempenho prejudicado.<\/p>\n<p>Felizmente, o servi\u00e7o Query tem v\u00e1rios recursos que permitem aos usu\u00e1rios gerenciar o uso de mem\u00f3ria das consultas e do servi\u00e7o em geral.<\/p>\n<p>Este blog explorar\u00e1 esses recursos em detalhes:<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li><b>Cota de mem\u00f3ria por solicita\u00e7\u00e3o<\/b><\/li>\n<li><b>Limite de mem\u00f3ria suave<\/b><\/li>\n<li><b>Cota de mem\u00f3ria de documentos em todo o n\u00f3<\/b><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h2>Cota de mem\u00f3ria por solicita\u00e7\u00e3o<\/h2>\n<p>Uma parte significativa do uso da mem\u00f3ria do servi\u00e7o Query vem de valores transit\u00f3rios, que podem incluir documentos ou valores computados. A mem\u00f3ria usada por esses valores transit\u00f3rios ser\u00e1 chamada de <b>mem\u00f3ria de documentos <\/b>no blog.<\/p>\n<p>O servi\u00e7o Query recebe documentos do servi\u00e7o Data como um fluxo de bytes codificado. Entretanto, a mem\u00f3ria usada pelo valor associado ao documento pode ser muito maior do que o fluxo original. Isso ocorre porque o servi\u00e7o Query decodifica o fluxo em uma estrutura que pode ser grande, pois precisa armazenar todos os campos, valores e quaisquer objetos aninhados. O servi\u00e7o Query \u00e9 otimizado para desempenho e n\u00e3o para compacta\u00e7\u00e3o.<\/p>\n<p>O que acontece se uma consulta com uso intensivo de recursos aparecer e come\u00e7ar a consumir uma grande quantidade de mem\u00f3ria do documento? Ela pode acabar consumindo muita mem\u00f3ria e fazer com que outras consultas sejam interrompidas. Como podemos evitar uma <em>ganancioso<\/em>\u00a0de afetar a execu\u00e7\u00e3o de outras consultas ativas?<\/p>\n<p>\u00c9 exatamente nesse ponto que o <b>cota de mem\u00f3ria por solicita\u00e7\u00e3o<\/b> o recurso entra em cena!<\/p>\n<p>Desde o Couchbase 7.0, o servi\u00e7o Query fornece uma configura\u00e7\u00e3o chamada <strong>cota de mem\u00f3ria<\/strong>\u00a0para limitar a quantidade m\u00e1xima de mem\u00f3ria do documento que uma solicita\u00e7\u00e3o de consulta pode usar em um determinado momento durante sua execu\u00e7\u00e3o.<\/p>\n<p>Essa cota de mem\u00f3ria por solicita\u00e7\u00e3o funciona encerrando uma consulta se ela exceder sua cota, enquanto permite que todas as outras consultas ativas continuem a ser executadas. Isso garante que somente a consulta ambiciosa seja interrompida, evitando que ela afete o desempenho das outras consultas.<\/p>\n<p>A cota de mem\u00f3ria n\u00e3o corresponde ao uso da mem\u00f3ria do sistema operacional. Ela <i>somente <\/i>\u00e9 respons\u00e1vel pelo uso da mem\u00f3ria do documento e n\u00e3o por qualquer mem\u00f3ria usada no heap, na pilha, nos operadores de execu\u00e7\u00e3o, etc.<\/p>\n<h3>Como funciona a cota de mem\u00f3ria?<\/h3>\n<p>A cota de mem\u00f3ria por solicita\u00e7\u00e3o pode ser considerada como a configura\u00e7\u00e3o de um pool de mem\u00f3ria de documentos para uma solicita\u00e7\u00e3o de consulta. O tamanho do pool \u00e9 determinado pelo valor da cota de mem\u00f3ria da consulta.<\/p>\n<p>Quando a consulta requer um documento\/valor, ela aloca o tamanho do documento\/valor desse pool. Quando o valor\/documento n\u00e3o \u00e9 mais necess\u00e1rio, o tamanho alocado \u00e9 devolvido ao pool para ser reutilizado pela solicita\u00e7\u00e3o.<\/p>\n<p>Em um determinado momento, a quantidade total de mem\u00f3ria do documento que est\u00e1 sendo usada pela solicita\u00e7\u00e3o de consulta n\u00e3o pode exceder o tamanho de seu pool, ou seja, sua cota de mem\u00f3ria. Se a consulta tentar usar mais mem\u00f3ria de documento do que a dispon\u00edvel em seu pool, a solicita\u00e7\u00e3o ser\u00e1 encerrada e um erro ser\u00e1 retornado.<\/p>\n<p>\u00c9 importante observar que o servi\u00e7o Query \u00e9 altamente paralelizado e os operadores podem ser executados simultaneamente. Isso significa que o fato de uma consulta exceder a cota de mem\u00f3ria pode variar entre as execu\u00e7\u00f5es. Isso ocorre porque, dependendo das especificidades de cada execu\u00e7\u00e3o, a quantidade de mem\u00f3ria do documento que est\u00e1 sendo usada (e, portanto, alocada do pool de solicita\u00e7\u00f5es) pode variar, mesmo no mesmo est\u00e1gio de execu\u00e7\u00e3o.<\/p>\n<h3>Como configurar a cota de mem\u00f3ria<\/h3>\n<p>A cota de mem\u00f3ria por solicita\u00e7\u00e3o pode ser definida em um cluster, n\u00f3 e n\u00edvel de solicita\u00e7\u00e3o.<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li><b>Unidade:<\/b> MiB<\/li>\n<li><b>Padr\u00e3o:<\/b> 0, ou seja, n\u00e3o h\u00e1 limite para a quantidade de mem\u00f3ria do documento que uma solicita\u00e7\u00e3o pode usar<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h4>N\u00edvel de cluster<\/h4>\n<p>Defina a cota de mem\u00f3ria para cada n\u00f3 do Query no cluster com a op\u00e7\u00e3o <a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-manage\/query-settings.html#queryMemoryQuota\"><b>queryMemoryQuota<\/b><\/a> configura\u00e7\u00e3o em n\u00edvel de cluster. O valor no n\u00edvel do cluster \u00e9 mantido e, quando definido, substitui a configura\u00e7\u00e3o no n\u00edvel do n\u00f3 para cada n\u00f3 de consulta.<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Saiba como definir uma configura\u00e7\u00e3o em n\u00edvel de cluster <a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-manage\/query-settings.html#cluster-level-query-settings\">aqui<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h4>N\u00edvel do n\u00f3<\/h4>\n<p>Defina a cota de mem\u00f3ria para um n\u00f3 de consulta espec\u00edfico com o comando <a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-manage\/query-settings.html#memory-quota-srv\"><b>cota de mem\u00f3ria<\/b><\/a> configura\u00e7\u00e3o em n\u00edvel de n\u00f3. O valor definido no n\u00edvel do n\u00f3 \u00e9 a cota de mem\u00f3ria padr\u00e3o para todas as solicita\u00e7\u00f5es de consulta executadas no n\u00f3. O valor em n\u00edvel de n\u00f3 n\u00e3o \u00e9 mantido e \u00e9 sobrescrito quando a configura\u00e7\u00e3o em n\u00edvel de cluster \u00e9 modificada.<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Saiba como definir uma configura\u00e7\u00e3o em n\u00edvel de n\u00f3 <a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-manage\/query-settings.html#service-level-query-settings\">aqui<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h4>N\u00edvel de solicita\u00e7\u00e3o<\/h4>\n<p>Defina a cota de mem\u00f3ria para uma solicita\u00e7\u00e3o de consulta espec\u00edfica com a op\u00e7\u00e3o <a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-manage\/query-settings.html#memory_quota_req\"><b>memory_quota<\/b><\/a> par\u00e2metro. O par\u00e2metro de n\u00edvel de solicita\u00e7\u00e3o substitui o valor da configura\u00e7\u00e3o de n\u00edvel de n\u00f3. Entretanto, se a configura\u00e7\u00e3o de n\u00edvel de n\u00f3 for maior que zero, o valor do n\u00edvel de solicita\u00e7\u00e3o ser\u00e1 limitado pelo valor do n\u00edvel de n\u00f3.<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Saiba como definir um par\u00e2metro em n\u00edvel de solicita\u00e7\u00e3o <a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-manage\/query-settings.html#section_nnj_sjk_k1b\">aqui<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h2>Limite de mem\u00f3ria flex\u00edvel do servi\u00e7o de consulta<\/h2>\n<p>Agora que exploramos como limitar o uso da mem\u00f3ria do documento de uma consulta, voc\u00ea deve estar se perguntando: existe uma maneira de limitar o uso da mem\u00f3ria do servi\u00e7o Query?<\/p>\n<p>O servi\u00e7o Query n\u00e3o tem nenhuma configura\u00e7\u00e3o para impor um limite r\u00edgido ao uso de mem\u00f3ria do servi\u00e7o. Isso ocorre porque a linguagem de programa\u00e7\u00e3o usada para desenvolver o SQL++ n\u00e3o fornece um mecanismo para impor um limite r\u00edgido ao uso de mem\u00f3ria em tempo de execu\u00e7\u00e3o. Mas ela fornece um mecanismo para ajustar o limite de mem\u00f3ria flex\u00edvel...<\/p>\n<p>Portanto, no Couchbase 7.6.0, o <b>cota de n\u00f3s <\/b>foi introduzida para ajustar o limite de mem\u00f3ria flex\u00edvel do servi\u00e7o Query!<\/p>\n<p>Como esse \u00e9 um limite flex\u00edvel, n\u00e3o h\u00e1 garantia de que o uso da mem\u00f3ria do servi\u00e7o Query sempre ficar\u00e1 estritamente abaixo dele ou que n\u00e3o ocorrer\u00e3o condi\u00e7\u00f5es de falta de mem\u00f3ria.  No entanto, \u00e9 feito um esfor\u00e7o para manter o uso da mem\u00f3ria do servi\u00e7o Query abaixo desse limite, executando o coletor de lixo (GC) com mais frequ\u00eancia quando esse limite \u00e9 ultrapassado ou se aproxima.<\/p>\n<p><b>Observa\u00e7\u00e3o importante:<\/b><br \/>\nSe o uso da mem\u00f3ria permanecer pr\u00f3ximo ao limite flex\u00edvel, o GC ser\u00e1 executado de forma agressiva, o que pode causar alta utiliza\u00e7\u00e3o da CPU.<\/p>\n<h3>Como configurar a cota do n\u00f3<\/h3>\n<p>A cota do n\u00f3 pode ser definida no n\u00edvel do cluster, do n\u00f3 e da solicita\u00e7\u00e3o.<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li><b>Unidade:<\/b> MiB<\/li>\n<li><b>Padr\u00e3o:<\/b> 0<\/li>\n<li><b>M\u00ednimo:<\/b> 1<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Embora o valor m\u00ednimo da cota de n\u00f3s seja de 1 MiB, defina a cota de n\u00f3s para valores pr\u00e1ticos, dependendo das cargas de trabalho e dos recursos do sistema.<\/p>\n<h4>N\u00edvel de cluster<\/h4>\n<p>Defina a cota do n\u00f3 para cada n\u00f3 do Query no cluster com a op\u00e7\u00e3o <a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-manage\/query-settings.html#queryNodeQuota\"><b>queryNodeQuota<\/b><\/a> configura\u00e7\u00e3o em n\u00edvel de cluster. O valor no n\u00edvel do cluster \u00e9 mantido e, quando definido, substitui a configura\u00e7\u00e3o no n\u00edvel do n\u00f3 para cada n\u00f3 de consulta.<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Saiba como definir uma configura\u00e7\u00e3o em n\u00edvel de cluster <a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-manage\/query-settings.html#cluster-level-query-settings\">aqui<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><b>Observa\u00e7\u00e3o importante:<\/b><\/p>\n<p>Uma maneira de definir essa configura\u00e7\u00e3o em todo o cluster \u00e9 usar o Console da Web do Couchbase. No Console da Web, isso pode ser configurado na se\u00e7\u00e3o <a href=\"https:\/\/docs.couchbase.com\/server\/current\/manage\/manage-settings\/general-settings.html#memory-quotas\">Cota de mem\u00f3ria por n\u00f3 do servidor<\/a>\u00a0na p\u00e1gina Configura\u00e7\u00f5es.<\/p>\n<p>Esta se\u00e7\u00e3o destina-se especificamente \u00e0 configura\u00e7\u00e3o da cota de n\u00f3s no n\u00edvel do cluster do servi\u00e7o Query e n\u00e3o deve ser confundida com a configura\u00e7\u00e3o da cota de mem\u00f3ria no n\u00edvel do cluster.<\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/01\/image1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-16755 size-large\" style=\"border: 1px black solid;\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/01\/image1-1024x698.jpg\" alt=\"\" width=\"900\" height=\"613\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/01\/image1-1024x698.jpg 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/01\/image1-300x205.jpg 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/01\/image1-768x524.jpg 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/01\/image1-1536x1048.jpg 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/01\/image1-235x160.jpg 235w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/01\/image1-1320x900.jpg 1320w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/01\/image1.jpg 1686w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/a><\/p>\n<h4>N\u00edvel do n\u00f3<\/h4>\n<p>Defina a cota do n\u00f3 para um n\u00f3 de consulta espec\u00edfico com o comando <a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-manage\/query-settings.html#node-quota\"><b>cota de n\u00f3s<\/b><\/a> configura\u00e7\u00e3o em n\u00edvel de n\u00f3. O valor definido no n\u00edvel do n\u00f3 \u00e9 a cota de mem\u00f3ria padr\u00e3o para todas as solicita\u00e7\u00f5es de consulta executadas no n\u00f3. O valor em n\u00edvel de n\u00f3 n\u00e3o \u00e9 mantido e \u00e9 sobrescrito quando a configura\u00e7\u00e3o em n\u00edvel de cluster \u00e9 modificada.<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Saiba como definir uma configura\u00e7\u00e3o em n\u00edvel de n\u00f3 <a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-manage\/query-settings.html#service-level-query-settings\">aqui<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>Como configurar o limite de mem\u00f3ria tempor\u00e1ria<\/h3>\n<p>O limite de mem\u00f3ria tempor\u00e1ria do servi\u00e7o de consulta \u00e9 definido usando o valor da cota do n\u00f3. Se n\u00e3o for definido, ser\u00e1 calculado um valor padr\u00e3o.<\/p>\n<h4>Cota do n\u00f3<\/h4>\n<p>Se a cota do n\u00f3 estiver definida para um n\u00f3, esse ser\u00e1 o limite de mem\u00f3ria tempor\u00e1ria. O limite de mem\u00f3ria tempor\u00e1ria ser\u00e1 limitado a um valor m\u00e1ximo permitido, que \u00e9 calculado por meio das etapas a seguir:<\/p>\n<p style=\"padding-left: 40px;\">a) A diferen\u00e7a entre a RAM total do sistema e o 90% da RAM total do sistema \u00e9 calculada.<\/p>\n<p style=\"padding-left: 40px;\"><code>RAM total do sistema - (0,9 * RAM total do sistema)<\/code><\/p>\n<p style=\"padding-left: 40px;\">b) Se a diferen\u00e7a for maior que 8 GiB, o limite m\u00e1ximo de mem\u00f3ria tempor\u00e1ria ser\u00e1:<\/p>\n<p style=\"padding-left: 40px;\"><code>RAM total do sistema - 8 GiB<\/code><\/p>\n<p style=\"padding-left: 40px;\">c) Se a diferen\u00e7a for de 8 GiB ou menos, o limite m\u00e1ximo de mem\u00f3ria tempor\u00e1ria ser\u00e1 definido como 90% da RAM total do sistema.<\/p>\n<p>Se a cota do n\u00f3 exceder o m\u00e1ximo calculado, o limite de mem\u00f3ria tempor\u00e1ria ser\u00e1 silenciosamente definido como o m\u00e1ximo.<\/p>\n<h4>Padr\u00e3o<\/h4>\n<p>Se a configura\u00e7\u00e3o de cota do n\u00f3 n\u00e3o estiver definida para um n\u00f3, um valor padr\u00e3o ser\u00e1 calculado para o limite flex\u00edvel usando as etapas a seguir:<\/p>\n<p style=\"padding-left: 40px;\">a) A diferen\u00e7a entre a RAM total do sistema e o 90% da RAM total do sistema \u00e9 calculada.<\/p>\n<p style=\"padding-left: 40px;\"><code>RAM total do sistema - (0,9 * RAM total do sistema)<\/code><\/p>\n<p style=\"padding-left: 40px;\">b) Se a diferen\u00e7a for maior que 8 GiB, o limite de mem\u00f3ria tempor\u00e1ria padr\u00e3o ser\u00e1:<\/p>\n<p style=\"padding-left: 40px;\"><code>RAM total do sistema - 8 GiB<\/code><\/p>\n<p style=\"padding-left: 40px;\">c) Se a diferen\u00e7a for de 8 GiB ou menos, o limite de mem\u00f3ria tempor\u00e1ria padr\u00e3o ser\u00e1 definido como 90% da RAM total do sistema.<\/p>\n<h2>Cota de mem\u00f3ria de documentos em todo o n\u00f3<\/h2>\n<p>E se uma carga de trabalho tiver uma consulta que exija uma grande quantidade de mem\u00f3ria para ser executada. Aplicar uma cota de mem\u00f3ria por solicita\u00e7\u00e3o pode n\u00e3o ser o ideal, pois essa consulta pode ser encerrada com frequ\u00eancia por exceder a cota. Como essa consulta pode ser executada com \u00eaxito e, ao mesmo tempo, proteger o servi\u00e7o de consulta contra o uso excessivo de mem\u00f3ria?<\/p>\n<p>Considere outro cen\u00e1rio com v\u00e1rias consultas sendo executadas simultaneamente, cada uma com uma cota de mem\u00f3ria por solicita\u00e7\u00e3o definida. Nesse cen\u00e1rio, o uso de mem\u00f3ria do servi\u00e7o tornou-se muito alto. Mas o uso da mem\u00f3ria do documento das consultas permanece abaixo de suas respectivas cotas. Portanto, nenhuma consulta \u00e9 encerrada. Como resultado, o uso geral da mem\u00f3ria do servi\u00e7o de consulta permanece alto, causando problemas. Como isso pode ser resolvido?<\/p>\n<p>A partir do Couchbase 7.6.0, o servi\u00e7o de consulta tem um mecanismo para limitar a quantidade cumulativa de mem\u00f3ria de documento que as consultas ativas podem usar! A introdu\u00e7\u00e3o de uma cota de mem\u00f3ria de documento em todo o n\u00f3 tenta resolver esses desafios.<\/p>\n<h3>Como funciona a cota em todo o n\u00f3?<\/h3>\n<p>A cota em todo o n\u00f3 pode ser considerada como a configura\u00e7\u00e3o de um pool de mem\u00f3ria de documentos para todo o servi\u00e7o Query em um n\u00f3.<\/p>\n<p>Quando a cota de n\u00f3 \u00e9 definida, um <em>sess\u00e3o de mem\u00f3ria<\/em>\u00a0\u00e9 criado para cada solicita\u00e7\u00e3o. Por padr\u00e3o, essa sess\u00e3o come\u00e7a com um tamanho inicial de 1 MiB. Quando a cota de todo o n\u00f3 \u00e9 configurada, 1 MiB \u00e9 alocado para cada prestador de servi\u00e7os e subtra\u00eddo do pool de todo o n\u00f3. Essa aloca\u00e7\u00e3o padr\u00e3o garante que cada prestador de servi\u00e7os tenha pelo menos uma quantidade m\u00ednima de espa\u00e7o reservado, assegurando que as solicita\u00e7\u00f5es recebidas sempre possam ser atendidas.<\/p>\n<p>Quando uma solicita\u00e7\u00e3o requer um valor\/documento, o tamanho do valor\/documento \u00e9 alocado a partir de seu <i>sess\u00e3o<\/i>. Se a sess\u00e3o n\u00e3o tiver mem\u00f3ria suficiente para essa aloca\u00e7\u00e3o, ela <b>crescer<\/b> em incrementos m\u00ednimos de 1 MiB para acomodar a solicita\u00e7\u00e3o de aloca\u00e7\u00e3o. A mem\u00f3ria adicional necess\u00e1ria para esse crescimento \u00e9 alocada do pool de todo o n\u00f3.<\/p>\n<p>Se a sess\u00e3o de mem\u00f3ria de uma solicita\u00e7\u00e3o ativa tentar crescer al\u00e9m da mem\u00f3ria restante dispon\u00edvel no pool de todo o n\u00f3, a solicita\u00e7\u00e3o ser\u00e1 interrompida e um erro ser\u00e1 retornado.<\/p>\n<p>Quando a solicita\u00e7\u00e3o n\u00e3o precisa mais do valor\/documento, ela retorna o tamanho alocado de volta ao seu<i> sess\u00e3o<\/i>.<\/p>\n<p>A mem\u00f3ria da sess\u00e3o (excluindo os 1 MiB da reserva inicial do servidor) s\u00f3 \u00e9 devolvida ao pool de todo o n\u00f3 quando a execu\u00e7\u00e3o da solicita\u00e7\u00e3o \u00e9 conclu\u00edda.<\/p>\n<p>A qualquer momento, o tamanho total de todas as sess\u00f5es de mem\u00f3ria n\u00e3o pode exceder o tamanho da cota de todo o n\u00f3.<\/p>\n<p>\u00c9 importante entender que essa sess\u00e3o de mem\u00f3ria n\u00e3o deve ser confundida com o pool por solicita\u00e7\u00e3o que \u00e9 configurado quando a cota de mem\u00f3ria \u00e9 definida para uma solicita\u00e7\u00e3o. \u00c9 poss\u00edvel configurar uma cota em todo o n\u00f3 e uma cota de mem\u00f3ria por solicita\u00e7\u00e3o. Ler <b>Configura\u00e7\u00e3o da cota de documentos em todo o n\u00f3 e da cota de mem\u00f3ria por solicita\u00e7\u00e3o <\/b>se\u00e7\u00e3o abaixo para saber mais.<\/p>\n<p>Dessa forma, a cota em todo o n\u00f3 coloca um limite na quantidade de mem\u00f3ria do documento que est\u00e1 sendo usada por todas as solicita\u00e7\u00f5es ativas.<\/p>\n<p>A cota de documentos em todo o n\u00f3 s\u00f3 pode ser configurada quando a configura\u00e7\u00e3o de cota do n\u00f3 for <b><i>explicitamente<\/i><\/b> definido para um n\u00f3. O tamanho dessa cota \u00e9 calculado usando duas configura\u00e7\u00f5es de consulta, <b>cota de n\u00f3s<\/b> (explorado em uma se\u00e7\u00e3o anterior) e <b>valor da cota do n\u00f3 em porcentagem<\/b>.<\/p>\n<h3>Como configurar a porcentagem do valor da cota do n\u00f3?<\/h3>\n<p>O valor percentual da cota do n\u00f3 \u00e9 a porcentagem da cota do n\u00f3 dedicada \u00e0 mem\u00f3ria de conte\u00fado de valor rastreado\/\"mem\u00f3ria de documento\" em todas as solicita\u00e7\u00f5es ativas.<\/p>\n<p>A porcentagem do valor da cota do n\u00f3 pode ser definida no n\u00edvel do cluster e do n\u00f3.<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li><b>Unidade:<\/b> MiB<\/li>\n<li><b>Padr\u00e3o:<\/b> 67<\/li>\n<li><b>M\u00ednimo:<\/b> 0<\/li>\n<li><b>M\u00e1ximo:<\/b> 100<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h4>N\u00edvel de cluster<\/h4>\n<p>Defina a porcentagem do valor da cota do n\u00f3 para cada n\u00f3 de consulta no cluster com a op\u00e7\u00e3o <a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-manage\/query-settings.html#queryNodeQuotaValPercent\"><b>queryNodeQuotaValPercent<\/b><\/a> configura\u00e7\u00e3o em n\u00edvel de cluster. O valor no n\u00edvel do cluster \u00e9 mantido e, quando definido, substitui a configura\u00e7\u00e3o no n\u00edvel do n\u00f3 para cada n\u00f3 de consulta.<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Saiba como definir uma configura\u00e7\u00e3o em n\u00edvel de cluster <a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-manage\/query-settings.html#cluster-level-query-settings\">aqui<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h4>N\u00edvel do n\u00f3<\/h4>\n<p>Defina a porcentagem do valor da cota do n\u00f3 para um n\u00f3 de consulta espec\u00edfico com a op\u00e7\u00e3o <a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-manage\/query-settings.html#node-quota-val-percent\"><b>node-quota-val-percent<\/b><\/a> configura\u00e7\u00e3o em n\u00edvel de n\u00f3. O valor definido no n\u00edvel do n\u00f3 \u00e9 a cota de mem\u00f3ria padr\u00e3o para todas as solicita\u00e7\u00f5es de consulta executadas no n\u00f3. O valor em n\u00edvel de n\u00f3 n\u00e3o \u00e9 mantido e \u00e9 sobrescrito quando a configura\u00e7\u00e3o em n\u00edvel de cluster \u00e9 modificada.<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Saiba como definir uma configura\u00e7\u00e3o em n\u00edvel de n\u00f3 <a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-manage\/query-settings.html#service-level-query-settings\">aqui<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>Como configurar a cota de mem\u00f3ria de documentos em todo o n\u00f3<\/h3>\n<p>O tamanho da cota de mem\u00f3ria do documento em todo o n\u00f3 \u00e9 calculado em rela\u00e7\u00e3o \u00e0 cota do n\u00f3. A cota do n\u00f3 <i>deve<\/i> seja definido para que a cota de mem\u00f3ria do documento em todo o n\u00f3 seja configurada.<\/p>\n<p>O tamanho do pool em todo o n\u00f3 \u00e9 calculado usando as seguintes etapas:<\/p>\n<p style=\"padding-left: 40px;\">1. Calcule a porcentagem da cota do n\u00f3 dedicada ao rastreamento da mem\u00f3ria do documento em todas as consultas ativas usando a seguinte f\u00f3rmula:<\/p>\n<p style=\"padding-left: 40px;\"><code>cota de n\u00f3 * cota de n\u00f3-val-percent \/ 100<\/code><\/p>\n<p style=\"padding-left: 40px;\">2. Calcule o valor m\u00ednimo permitido para a cota de mem\u00f3ria de documentos em todo o n\u00f3.<\/p>\n<p style=\"padding-left: 40px;\">A execu\u00e7\u00e3o de instru\u00e7\u00f5es SQL++ \u00e9 gerenciada por <em>prestadores de servi\u00e7os<\/em>. Quando uma consulta deve ser executada, ela \u00e9 atribu\u00edda a um thread de servidor que \u00e9 respons\u00e1vel por sua execu\u00e7\u00e3o. O servi\u00e7o de consulta \u00e9 configurado com v\u00e1rios servidores para lidar com as solicita\u00e7\u00f5es recebidas. H\u00e1 dois tipos de servidores, <em>Servidores ilimitados<\/em> e <em>al\u00e9m de prestadores de servi\u00e7os<\/em>.<\/p>\n<p style=\"padding-left: 40px;\">O mecanismo de consulta reserva 1 MiB de mem\u00f3ria de documento para cada servidor. Portanto, o valor inicial padr\u00e3o da sess\u00e3o de mem\u00f3ria de cada solicita\u00e7\u00e3o \u00e9 de 1 MiB. Isso significa que o uso da mem\u00f3ria do documento de linha de base ser\u00e1 o n\u00famero total de servidores ilimitados e adicionais, medido em MiB.<\/p>\n<p style=\"padding-left: 40px;\">Portanto, o tamanho da cota de mem\u00f3ria do documento em todo o n\u00f3 deve ser <i>pelo menos <\/i>igual ao n\u00famero de servicers, medido em MiB.<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Saiba mais sobre os servicers ilimitados <a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-manage\/query-settings.html#servicers\">aqui<\/a> e mais prestadores de servi\u00e7os <a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-manage\/query-settings.html#plus-servicers\">aqui<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p style=\"padding-left: 40px;\"><b>F\u00f3rmula 1<\/b><b><i><\/i><\/b><\/p>\n<p style=\"padding-left: 40px;\"><code>Cota reservada para os prestadores de servi\u00e7os =.<br \/>\n(n\u00famero de servidores n\u00e3o limitados + n\u00famero de mais servidores) MiB<\/code><\/p>\n<p style=\"padding-left: 40px;\">3. O tamanho da cota de mem\u00f3ria de documentos em todo o n\u00f3 \u00e9 calculado usando a seguinte f\u00f3rmula:<\/p>\n<p style=\"padding-left: 40px;\"><b>F\u00f3rmula 2<\/b><\/p>\n<p style=\"padding-left: 40px;\"><code>Tamanho da cota de mem\u00f3ria de documentos em todo o n\u00f3<br \/>\n=<br \/>\nMAX( node-quota * node-quota-val-percent \/ 100, Quota reservada para prestadores de servi\u00e7os)<\/code><\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\">A cota reservada para os servicers \u00e9 calculada usando<b> F\u00f3rmula 1<\/b><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Esse \u00e9 o tamanho m\u00e1ximo permitido de todas as sess\u00f5es de mem\u00f3ria entre solicita\u00e7\u00f5es ativas e <i>inclui <\/i>a reserva inicial para cada prestador de servi\u00e7os.<\/p>\n<h4>C\u00e1lculo da cota dispon\u00edvel no pool para o crescimento da mem\u00f3ria do documento<\/h4>\n<p>A reserva inicial para os servidores \u00e9 deduzida da cota de mem\u00f3ria de documentos em todo o n\u00f3 para o n\u00f3. Qualquer espa\u00e7o restante no pool de mem\u00f3ria em todo o n\u00f3 pode ser usado por cada solicita\u00e7\u00e3o ativa para aumentar o uso da mem\u00f3ria do documento al\u00e9m da reserva inicial de 1 MiB.<\/p>\n<p>Essa cota restante dispon\u00edvel para o crescimento da mem\u00f3ria do documento \u00e9 calculada usando a seguinte f\u00f3rmula:<\/p>\n<p style=\"padding-left: 40px;\"><b>F\u00f3rmula 3<\/b><\/p>\n<p style=\"padding-left: 40px;\"><code>Tamanho da cota de mem\u00f3ria do documento em todo o n\u00f3 dispon\u00edvel para o crescimento das sess\u00f5es de mem\u00f3ria das solicita\u00e7\u00f5es ativas =.<br \/>\nTamanho da cota de mem\u00f3ria de documentos em todo o n\u00f3 - Cota reservada para servicers<\/code><\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\">O tamanho da cota de mem\u00f3ria do documento em todo o n\u00f3 \u00e9 calculado em<b> F\u00f3rmula 2\u00a0<\/b><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\">A cota reservada para os servicers \u00e9 calculada usando <b>F\u00f3rmula 1\u00a0<\/b><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>\u00c9 importante definir valores apropriados de node-quota e node-quota-val-percent que sejam pr\u00e1ticos e adequados \u00e0s cargas de trabalho. Um exemplo para ilustrar a import\u00e2ncia disso:<\/p>\n<h4>Exemplo<\/h4>\n<p>Considere um n\u00f3 de consulta com 32 servidores ilimitados e 128 servidores adicionais. O administrador define a cota do n\u00f3 como 10 MiB. O node-quota-val-percent \u00e9 o valor padr\u00e3o de 67.<\/p>\n<p>Usando <b>F\u00f3rmula 2<\/b> para calcular o tamanho da cota de mem\u00f3ria do documento em todo o n\u00f3:<\/p>\n<pre class=\"nums:false lang:default decode:true\">Tamanho da cota de mem\u00f3ria de documentos em todo o n\u00f3\r\n\r\n= MAX( cota do n\u00f3 * cota do n\u00f3-val-percent \/ 100, cota reservada para prestadores de servi\u00e7os)\r\n\r\n= MAX(\r\n   cota de n\u00f3 * cota de n\u00f3-val-percent \/ 100,\r\n   (n\u00famero de servidores n\u00e3o limitados + n\u00famero de mais servidores) MiB\r\n  )\r\n\r\n= MAX ( 10 * 67 \/ 100 MiB, (32+128) MiB )\r\n= MAX ( 6,7 MiB, 160 MiB)\r\n= 160 MiB<\/pre>\n<p>Usando <b>F\u00f3rmula 3 <\/b>para calcular a quantidade de mem\u00f3ria do documento dispon\u00edvel no pool de todo o n\u00f3 dispon\u00edvel para o crescimento da mem\u00f3ria das solicita\u00e7\u00f5es:<\/p>\n<pre class=\"nums:false lang:default decode:true\">= Tamanho da cota de mem\u00f3ria do documento em todo o n\u00f3 - (n\u00famero de servidores ilimitados + n\u00famero de servidores mais)\r\n(n\u00famero de servidores ilimitados + n\u00famero de mais servidores) MiB\r\n\r\n= 160 MiB - (32+128) MiB\r\n= 160 MiB - 160 MiB\r\n= 0 MiB\r\n<\/pre>\n<p>Isso significa que n\u00e3o h\u00e1 espa\u00e7o para o crescimento da mem\u00f3ria de documentos de solicita\u00e7\u00f5es al\u00e9m de sua reserva inicial de 1 MiB. Em outras palavras, cada solicita\u00e7\u00e3o \u00e9 <i>limitado<\/i> para usar um m\u00e1ximo de 1 MiB de mem\u00f3ria de documento.<\/p>\n<p>Al\u00e9m disso, a cota de n\u00f3 de 10 MiB \u00e9 muito pequena, e a coleta de lixo provavelmente ser\u00e1 for\u00e7ada a ser executada com frequ\u00eancia, causando alta utiliza\u00e7\u00e3o da CPU.<\/p>\n<h2>Relat\u00f3rios de n\u00fameros de mem\u00f3ria de documentos<\/h2>\n<p>Se a cota de mem\u00f3ria tiver sido definida para uma solicita\u00e7\u00e3o ou se um pool de mem\u00f3ria de documento em todo o n\u00f3 tiver sido configurado, as informa\u00e7\u00f5es sobre o mesmo ser\u00e3o relatadas em v\u00e1rios recursos do SQL++ que ser\u00e3o explorados a seguir. Essas informa\u00e7\u00f5es s\u00e3o \u00fateis para a depura\u00e7\u00e3o.<\/p>\n<h3>Sa\u00edda de resposta<\/h3>\n<h3 style=\"padding-left: 40px;\"><b style=\"color: #333333; font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 19px;\">a) M\u00e9tricas:<\/b><\/h3>\n<p style=\"padding-left: 40px;\">O <b>usedMemory<\/b> no campo <em>m\u00e9tricas<\/em>\u00a0da resposta da consulta informa o <b>marca d'\u00e1gua alta (HWM)<\/b> uso da mem\u00f3ria do documento da consulta em <b>bytes.<\/b><b><br \/>\n<\/b><b><br \/>\n<\/b>O servi\u00e7o Query \u00e9 altamente paralelizado, e os operadores podem ser executados simultaneamente.  Como resultado, o <b>usedMemory <\/b>podem variar entre as execu\u00e7\u00f5es da mesma consulta. Isso ocorre porque, dependendo das especificidades de cada execu\u00e7\u00e3o, o uso da mem\u00f3ria do documento HWM pode ser diferente.<\/p>\n<pre class=\"nums:false lang:default decode:true\" style=\"padding-left: 40px;\">\"metrics\": {\r\n  \"elapsedTime\": \"19.07875ms\",\r\n  \"executionTime\" (tempo de execu\u00e7\u00e3o): \"18.909916ms\",\r\n  \"resultCount\": 10000,\r\n  \"resultSize\": 248890,\r\n  \"serviceLoad\": 2,\r\n  \"usedMemory\": 341420\r\n}<\/pre>\n<p style=\"padding-left: 40px;\"><b>b) Se\u00e7\u00e3o de controles:<\/b><br \/>\nSe o <b>controles<\/b> A configura\u00e7\u00e3o de consulta est\u00e1 ativada e o <b>cota de mem\u00f3ria <\/b>configurado para a solicita\u00e7\u00e3o, o <b>memoryQuota<\/b> no campo <b>controles<\/b>\u00a0da resposta da consulta informa o valor da cota de mem\u00f3ria definida.<\/p>\n<pre class=\"nums:false lang:default decode:true\" style=\"padding-left: 40px;\">\"controles\": {\r\n  \"scan_consistency\": \"unbounded\",\r\n  \"use_cbo\": \"true\",\r\n  \"memoryQuota\": \"25\",\r\n  \"n1ql_feat_ctrl\": \"0x4c\",\r\n  \"disabledFeatures\":[\r\n    \"(Reservado para uso futuro) (0x40)\",\r\n    \"Planos codificados (0x4)\",\r\n    \"UDFs de Golang (0x8)\"\r\n  ],\r\n  \"stmtType\": \"SELECT\"\r\n}<\/pre>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Saiba mais sobre a configura\u00e7\u00e3o de controles <a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-manage\/query-settings.html#controls-srv\">aqui<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>Espa\u00e7os de chaves do sistema<\/h3>\n<p style=\"padding-left: 40px;\"><code>system:completed_requests, system:active_requests<\/code><\/p>\n<p style=\"padding-left: 40px;\">Na entrada de uma solicita\u00e7\u00e3o nesses espa\u00e7os de chave do sistema:<\/p>\n<p style=\"padding-left: 40px;\">O <b>usedMemory<\/b>\u00a0\u00e9 o campo <b>HWM<\/b> uso da mem\u00f3ria do documento da consulta em bytes. O servi\u00e7o de consulta \u00e9 altamente paralelizado, e os operadores podem ser executados simultaneamente.  Como resultado, o <b>usedMemory <\/b>podem variar entre as execu\u00e7\u00f5es da mesma consulta. Isso ocorre porque, dependendo das especificidades de cada execu\u00e7\u00e3o, o uso da mem\u00f3ria do documento HWM pode ser diferente.<\/p>\n<p style=\"padding-left: 40px;\">O <b>memoryQuota<\/b>\u00a0\u00e9 o valor da cota de mem\u00f3ria definida para a solicita\u00e7\u00e3o<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Saiba mais sobre <em>system:completed_requests<\/em> <a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-manage\/monitoring-n1ql-query.html#sys-completed-config\">aqui<\/a> e <em>system:active_requests<\/em> <a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-manage\/monitoring-n1ql-query.html#sys-active-req\">aqui<\/a>.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h2>Configura\u00e7\u00e3o da cota de mem\u00f3ria por solicita\u00e7\u00e3o e da cota de documentos em todo o n\u00f3<\/h2>\n<p>Conforme descrito no <b>Cota de mem\u00f3ria por solicita\u00e7\u00e3o<\/b>\u00a0se\u00e7\u00e3o, se uma solicita\u00e7\u00e3o tiver uma cota de mem\u00f3ria configurada, a quantidade m\u00e1xima de mem\u00f3ria do documento que ela pode usar a qualquer momento durante sua execu\u00e7\u00e3o ser\u00e1 limitada pela cota de mem\u00f3ria.<\/p>\n<p>Al\u00e9m disso, conforme explicado no <b>Cota de mem\u00f3ria de documentos em todo o n\u00f3<\/b>\u00a0Quando a cota de n\u00f3 e uma cota de mem\u00f3ria de documento em todo o n\u00f3 s\u00e3o configuradas, cada solicita\u00e7\u00e3o recebe sua pr\u00f3pria \"sess\u00e3o de mem\u00f3ria\". Qualquer aumento no tamanho dessas sess\u00f5es \u00e9 alocado a partir da cota de mem\u00f3ria do documento em todo o n\u00f3.<\/p>\n<p>Se uma cota de mem\u00f3ria do documento em todo o n\u00f3 estiver configurada e uma solicita\u00e7\u00e3o tiver uma cota de mem\u00f3ria definida, o uso da mem\u00f3ria do documento da solicita\u00e7\u00e3o de consulta ser\u00e1 limitado por <i>ambos<\/i> cotas.<\/p>\n<h3>Como seria realizada uma aloca\u00e7\u00e3o de valor\/documento?<\/h3>\n<p>Quando a solicita\u00e7\u00e3o requer um documento\/valor, as etapas a seguir s\u00e3o executadas durante o processo de aloca\u00e7\u00e3o:<\/p>\n<ol>\n<li><b> Aloca\u00e7\u00e3o de sess\u00e3o de mem\u00f3ria:<\/b><\/li>\n<\/ol>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\">A solicita\u00e7\u00e3o primeiro tenta alocar mem\u00f3ria para o documento a partir de sua sess\u00e3o de mem\u00f3ria.<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\">Se houver espa\u00e7o suficiente na sess\u00e3o, a aloca\u00e7\u00e3o ser\u00e1 bem-sucedida.<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\">Se n\u00e3o houver espa\u00e7o suficiente na sess\u00e3o, a sess\u00e3o tentar\u00e1 aumentar seu tamanho alocando a partir da cota de mem\u00f3ria do documento em todo o n\u00f3. (ou seja, do \"pool de mem\u00f3ria de documentos em todo o n\u00f3\").<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\">Se n\u00e3o houver espa\u00e7o suficiente para o crescimento da sess\u00e3o no pool de todo o n\u00f3, a solicita\u00e7\u00e3o ser\u00e1 interrompida e um erro ser\u00e1 retornado.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ol start=\"2\">\n<li><b> Solicitar aloca\u00e7\u00e3o de cota de mem\u00f3ria:<\/b><\/li>\n<\/ol>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\">Se a aloca\u00e7\u00e3o da sess\u00e3o for bem-sucedida, a solicita\u00e7\u00e3o tentar\u00e1 alocar mem\u00f3ria para o documento a partir de sua cota de mem\u00f3ria. (ou seja, de seu \"pool de mem\u00f3ria de solicita\u00e7\u00e3o\").<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\">Se houver espa\u00e7o suficiente em sua cota de mem\u00f3ria, a aloca\u00e7\u00e3o ser\u00e1 bem-sucedida e a solicita\u00e7\u00e3o prosseguir\u00e1.<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\">Se n\u00e3o houver espa\u00e7o restante suficiente na cota de mem\u00f3ria, a solicita\u00e7\u00e3o falhar\u00e1 e um erro ser\u00e1 retornado.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h2>Monitoramento com <em>sistema:sinais vitais<\/em><\/h2>\n<p>O espa\u00e7o de chaves do sistema <b>sistema:sinais vitais <\/b>cont\u00e9m informa\u00e7\u00f5es importantes sobre cada n\u00f3 do Query no cluster, inclusive informa\u00e7\u00f5es relacionadas ao uso da mem\u00f3ria e da CPU, coleta de lixo e muito mais.  Os usu\u00e1rios podem usar esse espa\u00e7o-chave do sistema para monitorar a integridade e os sinais vitais dos n\u00f3s do Query.<\/p>\n<p>H\u00e1 duas maneiras de acessar essas informa\u00e7\u00f5es:<\/p>\n<p style=\"padding-left: 40px;\">1. Consulte o espa\u00e7o-chave system:vitals usando o SQL++.<\/p>\n<p style=\"padding-left: 40px;\"><code>SELECT * FROM system:vitals;<\/code><\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol start=\"2\">\n<li>Acessar os sinais vitais por n\u00f3 usando o servi\u00e7o de consulta <b>\/admin\/vitais<\/b> ponto final.<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<p style=\"padding-left: 40px;\"><code>curl -u $USER:$PASSWORD $QUERY_NODE_URL\/admin\/vitals<\/code><\/p>\n<p style=\"padding-left: 40px;\">Abaixo est\u00e1 um exemplo de um registro em <em>sistema:sinais vitais<\/em> para um n\u00f3 de consulta.<\/p>\n<pre class=\"nums:false lang:js decode:true\" style=\"padding-left: 40px;\">{\r\n\"bucket.IO.stats\": {\r\n\"travel-sample\" (amostra de viagem): {\r\n\"reads\" (leituras): 52090\r\n}\r\n},\r\n\"cores\": 12,\r\n\"cpu.sys.percent\": 0.005,\r\n\"cpu.user.percent\": 0.0056,\r\n\"ffdc.total\": 0,\r\n\"gc.num\": 64352224,\r\n\"gc.pause.percent\": 0,\r\n\"gc.pause.time\": \"4.479336ms\",\r\n\"saud\u00e1vel\": verdadeiro,\r\n\"host.memory.free\": 321028096,\r\n\"host.memory.quota\": 10485760000,\r\n\"host.memory.total\": 38654705664,\r\n\"host.memory.value_quota\": 7025459200,\r\n\"load\": 0,\r\n\"loadfactor\": 6,\r\n\"local.time\": \"2024-12-05T17:21:25.609+05:30\",\r\n\"memory.system\": 584662408,\r\n\"memory.total\": 3884613696,\r\n\"memory.usage\": 25302328,\r\n\"node\" (n\u00f3): \"127.0.0.1:8091\",\r\n\"node.allocated.values\": 613916,\r\n\"node.memory.usage\": 251658240,\r\n\"process.memory.usage\": 0,\r\n\"process.percore.cpupercent\": 0,\r\n\"process.rss\": 629309440,\r\n\"process.service.usage\": 0,\r\n\"request.active.count\": 1,\r\n\"request.completed.count\": 41,\r\n\"request.per.sec.15min\": 0.0221,\r\n\"request.per.sec.1min\": 0.0136,\r\n\"request.per.sec.5min\": 0.017,\r\n\"request.prepared.percent\": 0,\r\n\"request.queued.count\": 0,\r\n\"request_time.80percentile\": \"63.969209ms\",\r\n\"request_time.95percentile\": \"74.865437ms\",\r\n\"request_time.99percentile\": \"150.904625ms\",\r\n\"request_time.mean\": \"37.019323ms\",\r\n\"request_time.median\": \"39.115791ms\",\r\n\"servicers.paused.count\": 0,\r\n\"servicers.paused.total\": 0,\r\n\"temp.hwm\": 0,\r\n\"temp.usage\": 0,\r\n\"total.threads\": 411,\r\n\"uptime\": \"12m48.431007375s\",\r\n\"version\": \"7.6.0-N1QL\"\r\n}<\/pre>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Saiba mais sobre o <em>Sinais vitais<\/em> <a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql-rest-admin\/index.html#Vitals\">aqui<\/a> e <em>sistema:sinais vitais<\/em> <a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-manage\/monitoring-n1ql-query.html#vitals\">aqui<\/a>.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h2>Como o servi\u00e7o de consulta aciona o coletor de lixo?<\/h2>\n<p>A partir da vers\u00e3o 7.6.0, o servi\u00e7o Query verifica rotineiramente se o coletor de lixo (GC) foi executado nos \u00faltimos 30 segundos. Se n\u00e3o tiver sido, o GC \u00e9 acionado para ser executado. Durante essa verifica\u00e7\u00e3o, a quantidade de mem\u00f3ria livre do sistema tamb\u00e9m \u00e9 monitorada. Se a quantidade de mem\u00f3ria livre for menor que 25%, ser\u00e1 feita uma tentativa de devolver o m\u00e1ximo poss\u00edvel de mem\u00f3ria ao sistema operacional.<\/p>\n<h2>Executar o coletor de lixo sob demanda<\/h2>\n<p>A partir da vers\u00e3o 7.6.0, o servi\u00e7o Query fornece um ponto de extremidade REST <b>\/admin\/gc <\/b>que pode ser invocado para executar o coletor de lixo. Esse ponto de extremidade pode ser chamado para acionar uma execu\u00e7\u00e3o do GC em uma tentativa de reduzir a utiliza\u00e7\u00e3o da mem\u00f3ria.<\/p>\n<p>Para for\u00e7ar a execu\u00e7\u00e3o do GC, emita uma solicita\u00e7\u00e3o GET para a API:<\/p>\n<p><code>curl -u $USER:$PASSWORD $QUERY_NODE_URL\/admin\/gc<\/code><\/p>\n<p>Para for\u00e7ar a execu\u00e7\u00e3o do GC e tentar retornar o m\u00e1ximo poss\u00edvel de mem\u00f3ria para o sistema operacional, emita uma solicita\u00e7\u00e3o POST para a API<\/p>\n<p><code>curl -X POST -u $USER:$PASSWORD $QUERY_NODE_URL\/admin\/gc<\/code><\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Saiba mais sobre esse ponto de extremidade <a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql-rest-admin\/index.html#get_gc\">aqui<\/a>.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><b>Observa\u00e7\u00e3o importante:<\/b><br \/>\nA execu\u00e7\u00e3o agressiva do coletor de lixo pode causar alta utiliza\u00e7\u00e3o da CPU.<\/p>\n<h2>Refer\u00eancias \u00fateis<\/h2>\n<ol>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/new-in-couchbase-server-7-0-n1ql-per-request-memory-quota\/\">Blog do Couchbase sobre cota de mem\u00f3ria por solicita\u00e7\u00e3o<\/a><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-manage\/monitoring-n1ql-query.html\">Documenta\u00e7\u00e3o do Couchbase para espa\u00e7os de chave do sistema<\/a><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-manage\/query-settings.html\">Configura\u00e7\u00e3o de cluster, n\u00f3, n\u00edvel de solicita\u00e7\u00e3o Configura\u00e7\u00f5es de consulta<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ol>","protected":false},"excerpt":{"rendered":"<p>In Couchbase, memory management in the Query service is key to keeping the service efficient and responsive, especially as the service handles an increasing number of queries simultaneously. Without proper memory management, things can go awry &#8211; greedy queries can [&hellip;]<\/p>","protected":false},"author":85183,"featured_media":16758,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1816,10133,1812],"tags":[10075,2445,10076],"ppma_author":[9950],"class_list":["post-16757","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-server","category-engineering","category-n1ql-query","tag-garbage-collector","tag-query-optimization","tag-quota"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.1 (Yoast SEO v26.1.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Query Service Memory Management in Couchbase<\/title>\n<meta name=\"description\" content=\"Couchbase Query Service manages memory efficiently with quotas, per-query limits, and node-wide settings to optimize performance and resource utilization.\" \/>\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\/memory-management-couchbase-query-service\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Query Service Memory Management in Couchbase\" \/>\n<meta property=\"og:description\" content=\"Couchbase Query Service manages memory efficiently with quotas, per-query limits, and node-wide settings to optimize performance and resource utilization.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/memory-management-couchbase-query-service\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2025-01-10T20:24:23+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-07-08T16:15:45+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/01\/blog-memory-management-couchbase-1024x536.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"536\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Dhanya Gowrish, Software Engineer\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Dhanya Gowrish, Software Engineer\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"16 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/memory-management-couchbase-query-service\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/memory-management-couchbase-query-service\/\"},\"author\":{\"name\":\"Dhanya Gowrish, Software Engineer\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/1515ea2da3d43fe576990a63041fbd73\"},\"headline\":\"Query Service Memory Management in Couchbase\",\"datePublished\":\"2025-01-10T20:24:23+00:00\",\"dateModified\":\"2025-07-08T16:15:45+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/memory-management-couchbase-query-service\/\"},\"wordCount\":3417,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/memory-management-couchbase-query-service\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/01\/blog-memory-management-couchbase.png\",\"keywords\":[\"garbage collector\",\"Query optimization\",\"quota\"],\"articleSection\":[\"Couchbase Server\",\"Engineering\",\"SQL++ \/ N1QL Query\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/memory-management-couchbase-query-service\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/memory-management-couchbase-query-service\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/memory-management-couchbase-query-service\/\",\"name\":\"Query Service Memory Management in Couchbase\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/memory-management-couchbase-query-service\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/memory-management-couchbase-query-service\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/01\/blog-memory-management-couchbase.png\",\"datePublished\":\"2025-01-10T20:24:23+00:00\",\"dateModified\":\"2025-07-08T16:15:45+00:00\",\"description\":\"Couchbase Query Service manages memory efficiently with quotas, per-query limits, and node-wide settings to optimize performance and resource utilization.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/memory-management-couchbase-query-service\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/memory-management-couchbase-query-service\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/memory-management-couchbase-query-service\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/01\/blog-memory-management-couchbase.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/01\/blog-memory-management-couchbase.png\",\"width\":2400,\"height\":1256},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/memory-management-couchbase-query-service\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Query Service Memory Management in Couchbase\"}]},{\"@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\/1515ea2da3d43fe576990a63041fbd73\",\"name\":\"Dhanya Gowrish, Software Engineer\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/e3bcefcd291385aabb0a1a9135722c59\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/04\/dhanyagowrish-couchbase.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/04\/dhanyagowrish-couchbase.png\",\"caption\":\"Dhanya Gowrish, Software Engineer\"},\"url\":\"https:\/\/www.couchbase.com\/blog\/pt\/author\/dhanyagowrish\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Gerenciamento de mem\u00f3ria do servi\u00e7o de consulta no Couchbase","description":"O Couchbase Query Service gerencia a mem\u00f3ria de forma eficiente com cotas, limites por consulta e configura\u00e7\u00f5es em todo o n\u00f3 para otimizar o desempenho e a utiliza\u00e7\u00e3o de recursos.","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\/memory-management-couchbase-query-service\/","og_locale":"pt_BR","og_type":"article","og_title":"Query Service Memory Management in Couchbase","og_description":"Couchbase Query Service manages memory efficiently with quotas, per-query limits, and node-wide settings to optimize performance and resource utilization.","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/memory-management-couchbase-query-service\/","og_site_name":"The Couchbase Blog","article_published_time":"2025-01-10T20:24:23+00:00","article_modified_time":"2025-07-08T16:15:45+00:00","og_image":[{"width":1024,"height":536,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/01\/blog-memory-management-couchbase-1024x536.png","type":"image\/png"}],"author":"Dhanya Gowrish, Software Engineer","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Dhanya Gowrish, Software Engineer","Est. reading time":"16 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/memory-management-couchbase-query-service\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/memory-management-couchbase-query-service\/"},"author":{"name":"Dhanya Gowrish, Software Engineer","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/1515ea2da3d43fe576990a63041fbd73"},"headline":"Query Service Memory Management in Couchbase","datePublished":"2025-01-10T20:24:23+00:00","dateModified":"2025-07-08T16:15:45+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/memory-management-couchbase-query-service\/"},"wordCount":3417,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/memory-management-couchbase-query-service\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/01\/blog-memory-management-couchbase.png","keywords":["garbage collector","Query optimization","quota"],"articleSection":["Couchbase Server","Engineering","SQL++ \/ N1QL Query"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/memory-management-couchbase-query-service\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/memory-management-couchbase-query-service\/","url":"https:\/\/www.couchbase.com\/blog\/memory-management-couchbase-query-service\/","name":"Gerenciamento de mem\u00f3ria do servi\u00e7o de consulta no Couchbase","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/memory-management-couchbase-query-service\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/memory-management-couchbase-query-service\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/01\/blog-memory-management-couchbase.png","datePublished":"2025-01-10T20:24:23+00:00","dateModified":"2025-07-08T16:15:45+00:00","description":"O Couchbase Query Service gerencia a mem\u00f3ria de forma eficiente com cotas, limites por consulta e configura\u00e7\u00f5es em todo o n\u00f3 para otimizar o desempenho e a utiliza\u00e7\u00e3o de recursos.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/memory-management-couchbase-query-service\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/memory-management-couchbase-query-service\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/memory-management-couchbase-query-service\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/01\/blog-memory-management-couchbase.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/01\/blog-memory-management-couchbase.png","width":2400,"height":1256},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/memory-management-couchbase-query-service\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Query Service Memory Management in Couchbase"}]},{"@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\/1515ea2da3d43fe576990a63041fbd73","name":"Dhanya Gowrish, engenheiro de software","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/e3bcefcd291385aabb0a1a9135722c59","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/04\/dhanyagowrish-couchbase.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/04\/dhanyagowrish-couchbase.png","caption":"Dhanya Gowrish, Software Engineer"},"url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/dhanyagowrish\/"}]}},"authors":[{"term_id":9950,"user_id":85183,"is_guest":0,"slug":"dhanyagowrish","display_name":"Dhanya Gowrish, Software Engineer","avatar_url":{"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/04\/dhanyagowrish-couchbase.png","url2x":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/04\/dhanyagowrish-couchbase.png"},"author_category":"","last_name":"Gowrish, Software Engineer","first_name":"Dhanya","job_title":"","user_url":"","description":""}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/16757","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\/85183"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=16757"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/16757\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/16758"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=16757"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=16757"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=16757"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=16757"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}