es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿jOOQ admite agregar nombres en declaraciones SQL?

¿Existe alguna manera de “etiquetar” o poner nombres en las declaraciones SQL en jOOQ para que cuando vea los registros de rendimiento de AWS RDS, pueda ver algo más significativo que los primeros 500 caracteres de la declaración?

Por ejemplo, Performance Insights muestra que esta consulta está afectando el rendimiento de mi base de datos:

select “myschema”.”custs”.”id”, “myschema”.”custs”.”otherid”, “myschema”.”custs”.”cidid”, “myschema”.”custs”.”validsince”, “myschema”.”custs”.”validuntil”, “myschema”.”custs”.”address”, “myschema”.”custs”.”addressid1″, “myschema”.”pets”.”id”, “myschema”.”pets”.”cstid”, “myschema”.”pets”.”tag”, “myschema”.”pets”.”name”, “myschema”.”pets”.”description”, “myschema”.”pets”.”owner”, “myschema”.”pets”.”createdon”, “myschema”.”pets”.”createdby”, “myschema”.”pets”.”modifiedon”,

Pero como viene cortado, no es directo saber qué código de jOOQ generó esto.

Preferiría ver algo como esto:

Búsqueda de Cliente-Mascota

o:

(Búsqueda de Cliente-Mascota) select “myschema”.”custs”.”id”, “myschema”.”custs”.”otherid”, “myschema”.”custs”.”cidid”, “myschema”.”custs”.”validsince”, “myschema”.”custs”.”validuntil”, “myschema”.”custs”.”address”, “myschema”.”custs”.”addressid1″, “myschema”.”pets”.”id”, “myschema”.”pets”.”cstid”, “myschema”.”pets”.”tag”, “myschema”.”pets”.”name”, “myschema”.”pets”.”description”, “myschema”.”pets”.”owner”, “myschema”.”pets”.”createdon”, “myschema”.”pets”.”createdby”, “myschema”.”pets”.”modifiedon”,

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, existe una manera de etiquetar las declaraciones SQL en jOOQ para facilitar su identificación en Performance Insights de AWS RDS. Esto se puede hacer utilizando la característica de nombre de declaración de jOOQ.

    Para usar esta característica, puedes establecer un nombre para cada declaración SQL llamando al método queryTimeout(int seconds) en el objeto Query o PreparedStatement en jOOQ, de esta manera:

    String queryName = "Búsqueda de cliente y mascota";
    DSLContext dsl = DSL.using(connection, dialect);
    Result<record> result = dsl
        .query("SELECT ...")
        .queryTimeout(5)
        .fetch();
    

    O, en el caso de un PreparedStatement:

    String queryName = "Búsqueda de cliente y mascota";
    DSLContext dsl = DSL.using(connection, dialect);
    PreparedStatement stmt = dsl
        .configuration()
        .prepareStatement("SELECT ...");
    stmt.setQueryTimeout(5);
    Result<record> result = stmt.fetch();
    

    Este nombre aparecerá junto a la declaración SQL en Performance Insights, lo que facilitará identificar qué código generó la declaración.

Comments are closed.