Megosztás a következőn keresztül:


Teljesítménynaplózó és visszahívás

JDBC-illesztőprogram letöltése

A 13.4-es verziótól kezdve az SQL Serverhez készült Microsoft JDBC-illesztőprogram teljesítménymetrika-keretrendszert biztosít a kritikus illesztőprogram-műveletek időzítésének nyomon követéséhez. Ezzel a keretrendszerrel megfigyelheti és elemezheti a kapcsolat- és utasításvégrehajtási viselkedést, így azonosíthatja az alkalmazás SQL Serverrel való interakcióinak késési szűk keresztmetszeteit.

A metrikák két, egymástól függetlenül vagy együtt használható mechanizmussal érhetők el:

  • Programozott visszahívás – Regisztráljon PerformanceLogCallback-t, hogy metrikákat fogadjon az alkalmazáskódban.
  • Java-naplózás – Előfizetés dedikált java.util.logging naplózókra a metrikák naplózásához a naplókimenetben.

Nyomon követett tevékenységek

A vezérlőprogram két szinten követi nyomon a tevékenységeket: kapcsolat és utasítás szinten.

Kapcsolatszintű tevékenységek

Activity Leírás
CONNECTION A kapcsolat létrehozásához szükséges teljes idő, beleértve az összes altevékenységet is.
PRELOGIN A TDS bejelentkezés előtti egyeztetés ideje a kiszolgálóval.
LOGIN A TDS bejelentkezési és hitelesítési kézfogásának ideje.
TOKEN_ACQUISITION Ideje összevont hitelesítési jogkivonatokat beszerezni a Microsoft Entra-hitelesítés használatakor.

Nyilatkozati szintű tevékenységek

Activity Leírás
STATEMENT_REQUEST_BUILD Ügyféloldali idő a TDS-kérés létrehozásához (paraméterkötés, SQL-feldolgozás, csomagépítés). Csak időzítés; nem követi nyomon a kivételeket.
STATEMENT_FIRST_SERVER_RESPONSE A kérés elküldésének ideje az első kiszolgálói válasz fogadásához. Csak időzítés; nem követi nyomon a kivételeket.
STATEMENT_PREPARE A következő időpontra sp_preparevonatkozó prepareMethod=prepare idő: .
STATEMENT_PREPEXEC A kombinált előkészítés és végrehajtás ideje sp_prepexec-on keresztül.
STATEMENT_EXECUTE Az utasítás végrehajtásának ideje (sp_executesql, sp_execute, közvetlen SQL, vagy köteg).

Teljesítménymetrikák engedélyezése

1. lehetőség: Visszahívás regisztrálása

Regisztráljon egy PerformanceLogCallback-t, hogy programozott módon fogadja a teljesítményadatokat:

SQLServerDriver.registerPerformanceLogCallback(new PerformanceLogCallback() {
    @Override
    public void publish(PerformanceActivity activity, int connectionId,
            long durationMs, Exception exception) {
        // Connection-level metrics
        System.out.printf("Activity: %s, Connection: %d, Duration: %d ms%n",
                activity, connectionId, durationMs);
    }

    @Override
    public void publish(PerformanceActivity activity, int connectionId,
            int statementId, long durationMs, Exception exception) {
        // Statement-level metrics
        System.out.printf("Activity: %s, Connection: %d, Statement: %d, Duration: %d ms%n",
                activity, connectionId, statementId, durationMs);
    }
});

2. lehetőség: Java-naplózás konfigurálása

Konfigurálja java.util.logging a teljesítménymetrika-naplózókat a FINE szinten.

Egy logging.properties fájlban:

com.microsoft.sqlserver.jdbc.PerformanceMetrics.Connection.level = FINE
com.microsoft.sqlserver.jdbc.PerformanceMetrics.Statement.level = FINE
handlers = java.util.logging.ConsoleHandler
java.util.logging.ConsoleHandler.level = FINE

Vagy programozott módon:

Logger.getLogger("com.microsoft.sqlserver.jdbc.PerformanceMetrics.Connection")
      .setLevel(Level.FINE);
Logger.getLogger("com.microsoft.sqlserver.jdbc.PerformanceMetrics.Statement")
      .setLevel(Level.FINE);

Metódushatás előkészítése utasítási tevékenységekre

A nyomon követett PreparedStatement tevékenységek a prepareMethod kapcsolati tulajdonságtól függenek. További információ: prepareMethodA kapcsolat tulajdonságainak beállítása.

prepareMethod beállítás Első végrehajtás Második végrehajtás Harmadik+ végrehajtás
prepexec (alapértelmezett) STATEMENT_EXECUTE (sp_executesql) STATEMENT_PREPEXEC (sp_prepexec) STATEMENT_EXECUTE (sp_execute)
prepare STATEMENT_PREPARE + STATEMENT_EXECUTE STATEMENT_EXECUTE STATEMENT_EXECUTE
none STATEMENT_EXECUTE (közvetlen SQL) STATEMENT_EXECUTE (közvetlen SQL) STATEMENT_EXECUTE (közvetlen SQL)

Megjegyzés:

Az alapértelmezett prepexec beállítással az illesztőprogram önálló használatot feltételezve defereli az előkészítést. A második végrehajtás (kombinált előkészítés és végrehajtás) használja sp_prepexec . A harmadik végrehajtástól kezdve a gyorsítótárazott fogópont a sp_execute segítségével újra felhasználható. Az első hívás kényszerítéséhez állítsa sp_prepexec a kapcsolati tulajdonságot enablePrepareOnFirstPreparedStatementCall a következőre: true.

Mintanapló kimenete

Az alábbi kimenet az alapértelmezett PreparedStatement beállítással három egymást követő végrehajtás prepexec során nyomon követett tevékenységeket mutatja be:

ConnectionID:1, StatementID:1 Request build time, duration: 8ms
ConnectionID:1, StatementID:1 First server response, duration: 17ms
ConnectionID:1, StatementID:1 Statement execute, duration: 75ms        ← 1st call: sp_executesql
ConnectionID:1, StatementID:1 Request build time, duration: 9ms
ConnectionID:1, StatementID:1 First server response, duration: 0ms
ConnectionID:1, StatementID:1 Statement prepexec, duration: 0ms        ← 2nd call: sp_prepexec
ConnectionID:1, StatementID:1 Request build time, duration: 0ms
ConnectionID:1, StatementID:1 First server response, duration: 0ms
ConnectionID:1, StatementID:1 Statement execute, duration: 0ms         ← 3rd call: sp_execute

Lásd még

A teljesítmény és a megbízhatóság javítása a JDBC-illesztővelA kapcsolat tulajdonságainak beállítása