Una de las formas de mejorar el rendimiento de tu aplicación en Couchbase es crear índices para consultas comunes. Sin embargo, cuando trabajas con Spring Data usando su DSL estándar, la consulta generada no es muy clara, lo que hace un poco más difícil crear el índice adecuado para ella.
Este problema puede resolverse fácilmente activando DEBUG nivel de registro en la clase AbstractN1qlBasedQueryimprimirá el N1QL en el registro, un comportamiento muy similar al de habilitar el atributo mostrar_sql en Hibernate. A continuación se muestra cómo puede establecer esta configuración en su application.yml
1 2 3 |
registro: nivel: org.springframework.datos.couchbase.repositorio.consulta: DEBUG |
También puede activarlo a través de Logback simplemente añadiéndolo como dependencia:
1 2 3 4 5 |
<dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> </dependency> |
Y luego, añada el logback.xml en su carpeta de recursos:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<configuration> <appender nombre="STDOUT" clase="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <logger nombre="org.springframework.data.couchbase.repository.query" nivel="depurar" /> <raíz nivel="info"> <appender-ref ref="STDOUT" /> </root> </configuration> |
Cuando vuelva a ejecutar su aplicación, las consultas N1QL generadas se imprimirán en los registros.
1 2 3 4 |
2018-11-29 14:31:25.999 DEBUG 33427 --- [ principal] o.s.d.c.r.consulta.AbstractN1qlBasedQuery : Ejecutar N1QL consulta: {"declaración":"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":"declaración_plus"} 2018-11-29 14:31:26.079 DEBUG 33427 --- [ principal] o.s.d.c.r.consulta.AbstractN1qlBasedQuery : Ejecutar N1QL consulta: {"args":["empresa-1","userId--1"],"declaración":"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":"declaración_plus"} 2018-11-29 14:31:26.186 DEBUG 33427 --- [ principal] o.s.d.c.r.consulta.AbstractN1qlBasedQuery : Ejecutar N1QL consulta: {"args":["area--1","empresa-1"],"declaración":"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":"declaración_plus"} 2018-11-29 14:31:26.827 DEBUG 33427 --- [ principal] o.s.d.c.r.consulta.AbstractN1qlBasedQuery : Ejecutar N1QL consulta: {"declaración":"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":"declaración_plus"} |
Si tiene alguna pregunta, envíeme un mensaje a @deniswsrosa
¿Funciona esto con SpringBoot 2.4 y springdata-couchbase 4.1.1? No he podido habilitar el registro para las consultas de repositorio con el siguiente logback-spring.xml?
%d{HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
%d{HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
Parece que el comentario no se puede editar ni borrar.logback xml esta distorsionado.pero es igual que tu ejemplo
https://github.com/spring-projects/spring-data-couchbase/issues/1045
Utilice el paquete org.springframework.data.couchbase.core.query a partir de Spring Data 4.
https://www.couchbase.com/how-to-log-queries-generated-by-spring-data/