Uma das maneiras de melhorar o desempenho do seu aplicativo no Couchbase é criar índices para consultas comuns. No entanto, quando você está trabalhando com o Spring Data usando sua DSL padrão, a consulta gerada não é muito clara, o que torna um pouco mais difícil criar o índice correto para ela.
Esse problema pode ser facilmente resolvido habilitando DEBUG nível de registro na classe Consulta baseada em AbstractN1qlele imprimirá a mensagem gerada N1QL no registro, um comportamento muito semelhante à ativação do atributo show_sql no Hibernate. Veja como você pode definir essa configuração em seu application.yml
1 2 3 |
registro: nível: org.estrutura de mola.dados.couchbase.repositório.consulta: DEBUG |
Você também pode ativá-lo por meio de retorno de registro simplesmente adicionando-o como uma dependência:
1 2 3 4 5 |
<dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-clássico</artifactId> <version>1.2.3</version> </dependency> |
E, em seguida, adicione o logback.xml em sua pasta de recursos:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<configuration> <appender nome="STDOUT" classe="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <logger nome="org.springframework.data.couchbase.repository.query" nível="debug" /> <raiz nível="info"> <appender-ref ref="STDOUT" /> </root> </configuration> |
Quando você executar o aplicativo novamente, as consultas N1QL geradas serão impressas nos registros.
1 2 3 4 |
2018-11-29 14:31:25.999 DEBUG 33427 --- [ principal] o.s.d.c.r.consulta.Consulta baseada em AbstractN1ql : Execução N1QL consulta: {"declaração":"SELECT META(`test`).id AS _ID, META(`test`).cas AS _CAS, `test`.* FROM `test` WHERE (`username` = \"myuser\") AND `_class` = \"com.bc.test.standalone.model.User\"","scan_consistency":"statement_plus"} 2018-11-29 14:31:26.079 DEBUG 33427 --- [ principal] o.s.d.c.r.consulta.Consulta baseada em AbstractN1ql : Execução N1QL consulta: {"args":["company--1","userId--1"],"declaração":"SELECT META(`test`).id AS _ID, META(`test`).cas AS _CAS, `test`.* FROM `test` where `_class` = \"com.bc.test.standalone.model.SecurityGroup\" and companyId = $1 and removed = false AND ARRAY_CONTAINS(users, $2)","scan_consistency":"statement_plus"} 2018-11-29 14:31:26.186 DEBUG 33427 --- [ principal] o.s.d.c.r.consulta.Consulta baseada em AbstractN1ql : Execução N1QL consulta: {"args":["area--1","company--1"],"declaração":"SELECT META(`test`).id AS _ID, META(`test`).cas AS _CAS, `test`.* FROM `test` where `_class` = \"com.bc.test.standalone.model.BusinessUnity\" and companyId = $2 and $1 within `test`","scan_consistency":"statement_plus"} 2018-11-29 14:31:26.827 DEBUG 33427 --- [ principal] o.s.d.c.r.consulta.Consulta baseada em AbstractN1ql : Execução N1QL consulta: {"declaração":"SELECT META(`test`).id AS _ID, META(`test`).cas AS _CAS, `test`.* FROM `test` WHERE (`companyId` = \"company--1\" AND `removed` = false AND `familyId` = \"famillyrsc--FamiliaTeste\") AND `_class` = \"com.bc.test.standalone.model.MaintenancePlan\"","scan_consistency":"statement_plus"} |
Se tiver alguma dúvida, envie-me um e-mail para @deniswsrosa
Isso funciona com o SpringBoot 2.4 e o springdata-couchbase 4.1.1? Não consegui ativar o registro para consultas de repositório com o logback-spring.xml abaixo?
%d{HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
%d{HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
Parece que o comentário não pode ser editado nem excluído. O xml do logback está distorcido, mas é o mesmo que o seu exemplo
https://github.com/spring-projects/spring-data-couchbase/issues/1045
Olá! Use o pacote org.springframework.data.couchbase.core.query do Spring Data 4 em diante
https://www.couchbase.com/how-to-log-queries-generated-by-spring-data/