Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Dimulai dengan versi 13.4, Driver Microsoft JDBC untuk SQL Server menyediakan kerangka kerja metrik performa untuk melacak waktu operasi driver penting. Anda dapat menggunakan kerangka kerja ini untuk mengamati dan menganalisis perilaku eksekusi koneksi dan pernyataan, membantu mengidentifikasi hambatan latensi dalam interaksi aplikasi Anda dengan SQL Server.
Metrik tersedia melalui dua mekanisme yang dapat digunakan secara independen atau bersama-sama:
-
Panggilan balik terprogram - Daftarkan
PerformanceLogCallbackuntuk menerima metrik dalam kode aplikasi Anda. -
Pengelogan Java - Berlangganan logger khusus
java.util.logginguntuk menangkap metrik dalam output log.
Aktivitas terpantau
Driver melacak aktivitas pada dua tingkat: koneksi dan pernyataan.
Aktivitas tingkat koneksi
| Aktivitas | Deskripsi |
|---|---|
CONNECTION |
Total waktu untuk membuat koneksi, termasuk semua sub aktivitas. |
PRELOGIN |
Waktu untuk negosiasi pralogin TDS dengan server. |
LOGIN |
Waktu untuk login TDS dan jabat tangan autentikasi. |
TOKEN_ACQUISITION |
Saatnya memperoleh token autentikasi gabungan saat menggunakan autentikasi Microsoft Entra. |
Aktivitas tingkat pernyataan
| Aktivitas | Deskripsi |
|---|---|
STATEMENT_REQUEST_BUILD |
Waktu sisi klien untuk membangun permintaan TDS (pengikatan parameter, pemrosesan SQL, konstruksi paket). Hanya waktu; tidak melacak pengecualian. |
STATEMENT_FIRST_SERVER_RESPONSE |
Waktu dari mengirim permintaan untuk menerima respons server pertama. Hanya pengukuran waktu; tidak melacak pengecualian. |
STATEMENT_PREPARE |
Waktu untuk sp_prepare saat prepareMethod=prepare. |
STATEMENT_PREPEXEC |
Saatnya untuk persiapan dan pelaksanaan gabungan melalui sp_prepexec. |
STATEMENT_EXECUTE |
Waktu untuk eksekusi perintah (sp_executesql, SQL langsung sp_execute, atau batch). |
Mengaktifkan metrik performa
Opsi 1: Mendaftarkan panggilan balik
Daftarkan PerformanceLogCallback untuk menerima data performa melalui program:
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);
}
});
Opsi 2: Mengonfigurasi pengelogan Java
Konfigurasikan java.util.logging untuk pencatat metrik performa pada FINE tingkat.
logging.properties dalam berkas
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
Atau secara terprogram:
Logger.getLogger("com.microsoft.sqlserver.jdbc.PerformanceMetrics.Connection")
.setLevel(Level.FINE);
Logger.getLogger("com.microsoft.sqlserver.jdbc.PerformanceMetrics.Statement")
.setLevel(Level.FINE);
Menyiapkan efek metode pada aktivitas pernyataan
Aktivitas yang dilacak untuk PreparedStatement bergantung pada properti koneksi prepareMethod. Untuk informasi selengkapnya tentang prepareMethod, lihat Mengatur properti koneksi.
prepareMethod Pengaturan |
Eksekusi pertama | Eksekusi kedua | Eksekusi ketiga+ |
|---|---|---|---|
prepexec (standar) |
STATEMENT_EXECUTE(sp_executesql) |
STATEMENT_PREPEXEC(sp_prepexec) |
STATEMENT_EXECUTE(sp_execute) |
prepare |
STATEMENT_PREPARE + STATEMENT_EXECUTE |
STATEMENT_EXECUTE |
STATEMENT_EXECUTE |
none |
STATEMENT_EXECUTE (SQL langsung) |
STATEMENT_EXECUTE (SQL langsung) |
STATEMENT_EXECUTE (SQL langsung) |
Nota
Dengan pengaturan default prepexec, driver menangguhkan persiapan karena diasumsikan untuk digunakan sekali. Eksekusi kedua menggunakan sp_prepexec (persiapan dan eksekusi gabungan). Dari eksekusi ketiga dan seterusnya, pegangan cache digunakan kembali melalui sp_execute. Untuk memaksa sp_prepexec pada panggilan pertama, atur properti koneksi enablePrepareOnFirstPreparedStatementCall ke true.
Contoh output log
Output berikut menunjukkan aktivitas yang dipantau selama tiga eksekusi berturut-turut PreparedStatement dengan pengaturan default 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
Baca juga
Meningkatkan performa dan keandalan dengan driver JDBCMengatur properti koneksi