Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Od verze 13.4 poskytuje ovladač Microsoft JDBC pro SQL Server architekturu metrik výkonu pro sledování načasování důležitých operací ovladačů. Pomocí této architektury můžete sledovat a analyzovat chování při provádění připojení a příkazů, což pomáhá identifikovat kritické body latence při interakcích vaší aplikace s SQL Serverem.
Metriky jsou dostupné prostřednictvím dvou mechanismů, které je možné používat nezávisle nebo společně:
-
Programové zpětné volání – Zaregistrujte
PerformanceLogCallback, abyste přijímali metriky v kódu aplikace. -
Protokolování v Javě – Přihlaste se k odběru vyhrazených
java.util.loggingprotokolovacích protokolů, abyste zachytili metriky ve výstupu protokolu.
Sledované aktivity
Ovladač sleduje aktivity na dvou úrovních: připojení a dotaz.
Aktivity na úrovni připojení
| Activity | Description |
|---|---|
CONNECTION |
Celkový čas vytvoření připojení, včetně všech dílčích aktivit. |
PRELOGIN |
Doba vyjednávání preloginu TDS se serverem |
LOGIN |
Čas pro přihlášení TDS a ověřování metodou handshake |
TOKEN_ACQUISITION |
Doba získání federovaných ověřovacích tokenů při použití ověřování Microsoft Entra |
Aktivity na úrovni příkazů
| Activity | Description |
|---|---|
STATEMENT_REQUEST_BUILD |
Čas na straně klienta pro sestavení požadavku TDS (vazby parametrů, zpracování SQL, konstrukce paketů). Pouze časování; nesleduje výjimky. |
STATEMENT_FIRST_SERVER_RESPONSE |
Čas od odeslání požadavku na přijetí první odpovědi serveru Pouze časování; nesleduje výjimky. |
STATEMENT_PREPARE |
Čas pro sp_prepare, když prepareMethod=prepare. |
STATEMENT_PREPEXEC |
Doba pro kombinovanou přípravu a provedení prostřednictvím sp_prepexec. |
STATEMENT_EXECUTE |
Doba provádění SQL dotazů (sp_executesql, přímé SQL sp_execute nebo dávková úloha). |
Povolení metrik výkonu
Možnost 1: Registrace zpětného volání
Zaregistrujte PerformanceLogCallback pro přijímání dat o výkonu programově:
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);
}
});
Možnost 2: Konfigurace protokolování Java
Nakonfigurujte java.util.logging zapisovače metrik výkonu na úrovni FINE.
logging.properties V souboru:
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
Nebo programově:
Logger.getLogger("com.microsoft.sqlserver.jdbc.PerformanceMetrics.Connection")
.setLevel(Level.FINE);
Logger.getLogger("com.microsoft.sqlserver.jdbc.PerformanceMetrics.Statement")
.setLevel(Level.FINE);
Příprava účinku metody na aktivity příkazů
Sledované aktivity PreparedStatement závisí na vlastnosti připojení prepareMethod. Pro více informací o prepareMethod viz Nastavení vlastností připojení.
prepareMethod nastavení |
První spuštění | Druhé spuštění | Třetí+ spuštění |
|---|---|---|---|
prepexec (výchozí) |
STATEMENT_EXECUTE (sp_executesql) |
STATEMENT_PREPEXEC (sp_prepexec) |
STATEMENT_EXECUTE (sp_execute) |
prepare |
STATEMENT_PREPARE + STATEMENT_EXECUTE |
STATEMENT_EXECUTE |
STATEMENT_EXECUTE |
none |
STATEMENT_EXECUTE (direct SQL) |
STATEMENT_EXECUTE (přímý SQL) |
STATEMENT_EXECUTE (direct SQL) |
Poznámka:
Při výchozím prepexec nastavení ovladač odkládá přípravu za předpokladu jednorázového použití. Druhé provedení používá sp_prepexec (kombinovaná příprava a spuštění). Od třetího spuštění je mezipaměťový popisovač znovu použit prostřednictvím sp_execute. Chcete-li vynutit sp_prepexec při prvním volání, nastavte vlastnost připojení enablePrepareOnFirstPreparedStatementCall na hodnotu true.
Ukázkový výstup protokolu
Následující výstup ukazuje aktivity sledované během tří po sobě jdoucích spuštění PreparedStatement s výchozím nastavením prepexec.
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
Viz také
Zvýšení výkonu a spolehlivosti pomocí ovladače JDBCNastavení vlastností připojení