Membuat Profil Performa Driver ODBC

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)

Penting

SQL Server Native Client (sering disingkat SNAC) telah dihapus dari SQL Server 2022 (16.x) dan SQL Server Management Studio 19 (SSMS). SQL Server Native Client (SQLNCLI atau SQLNCLI11) dan Penyedia Microsoft OLE DB warisan untuk SQL Server (SQLOLEDB) tidak direkomendasikan untuk pengembangan aplikasi baru. Beralih ke Microsoft OLE DB Driver (MSOLEDBSQL) baru untuk SQL Server atau Microsoft ODBC Driver terbaru untuk SQL Server ke depannya. Untuk SQLNCLI yang dikirim sebagai komponen SQL Server Database Engine (versi 2012 hingga 2019), lihat pengecualian Siklus Hidup Dukungan ini.

Driver ODBC SQL Server Native Client dapat memprofilkan dua jenis data performa:

  • Kueri yang berjalan lama.

    Driver dapat menulis ke file log kueri apa pun yang tidak mendapatkan respons dari server dalam jumlah waktu tertentu. Programmer aplikasi atau administrator database kemudian dapat meneliti setiap pernyataan SQL yang dicatat untuk menentukan bagaimana mereka dapat meningkatkan performanya.

  • Data performa driver.

    Driver dapat merekam statistik performa dan menulisnya ke file atau membuatnya tersedia untuk aplikasi melalui struktur data khusus driver bernama SQLPERF. File yang berisi statistik performa adalah file yang dibatasi tab yang dapat dengan mudah dianalisis dengan spreadsheet apa pun yang mendukung file yang dibatasi tab, seperti Microsoft Excel.

Salah satu jenis pembuatan profil dapat diaktifkan oleh:

  • Menyambungkan ke sumber data yang menentukan pengelogan.

  • Memanggil SQLSetConnectAttr untuk mengatur atribut khusus driver yang mengontrol pembuatan profil.

Setiap proses aplikasi mendapatkan salinan driver ODBC SQL Server Native Client sendiri, dan pembuatan profil bersifat global dengan kombinasi salinan driver dan proses aplikasi. Ketika apa pun dalam aplikasi menyalakan pembuatan profil, pembuatan profil mencatat informasi untuk semua koneksi yang aktif di driver dari aplikasi tersebut. Bahkan koneksi yang tidak secara khusus memanggil pembuatan profil disertakan.

Setelah driver membuka log pembuatan profil (baik data performa atau log kueri yang berjalan lama), driver tidak menutup log sampai driver dibongkar oleh Odbc Driver Manager, ketika aplikasi membebaskan semua lingkungan yang menanganinya terbuka di driver. Jika aplikasi membuka handel lingkungan baru, salinan driver baru akan dimuat. Jika aplikasi kemudian terhubung ke sumber data yang menentukan file log yang sama atau mengatur atribut khusus driver untuk log ke file yang sama, driver akan menimpa log lama.

Jika aplikasi mulai membuat profil ke file log dan aplikasi kedua mencoba mulai membuat profil ke file log yang sama, aplikasi kedua tidak dapat mencatat data pembuatan profil apa pun. Jika aplikasi kedua mulai membuat profil setelah aplikasi pertama membongkar drivernya, aplikasi kedua menimpa file log dari aplikasi pertama.

Jika aplikasi tersambung ke sumber data yang mengaktifkan pembuatan profil, driver akan mengembalikan SQL_ERROR jika aplikasi memanggil SQLSetConnectOption untuk mulai pengelogan . Panggilan ke SQLGetDiagRec kemudian mengembalikan yang berikut ini:

SQLState: 01000, pfNative = 0  
ErrorMsg: [Microsoft][SQL Server Native Client]  
   An error has occurred during the attempt to access  
   the log file, logging disabled.  

Driver berhenti mengumpulkan data performa ketika handel lingkungan ditutup. Jika aplikasi SQL Server Native Client memiliki beberapa koneksi, masing-masing dengan handel lingkungannya sendiri, maka driver akan berhenti mengumpulkan data performa ketika salah satu handel lingkungan terkait ditutup.

Data performa driver dapat disimpan dalam struktur data SQLPERF atau dicatat dalam file yang dibatasi tab. Data mencakup kategori statistik berikut:

  • Profil aplikasi

  • Koneksi

  • Jaringan

  • Waktu

Dalam tabel berikut, deskripsi bidang dalam struktur data SQLPERF juga berlaku untuk statistik yang dicatat dalam file log performa.

Statistik Profil Aplikasi

Bidang SQLPERF Deskripsi
TimerResolution Resolusi minimum waktu jam server dalam milidetik. Ini biasanya dilaporkan sebagai 0 (nol) dan hanya boleh dipertimbangkan jika angka yang dilaporkan besar. Jika resolusi minimum jam server lebih besar dari interval kemungkinan untuk beberapa statistik berbasis timer, statistik tersebut dapat disempurnakan.
SQLidu Jumlah pernyataan INSERT, DELETE, atau UPDATE setelah SQL_PERF_START.
SQLiduRows Jumlah pernyataan INSERT, DELETE, atau UPDATE setelah SQL_PERF_START.
SQLSelects Jumlah pernyataan SELECT yang diproses setelah SQL_PERF_START.
SQLSelectRows Jumlah baris yang dipilih setelah SQL_PERF_START.
Transaksi Jumlah transaksi pengguna setelah SQL_PERF_START, termasuk pembatalan. Saat aplikasi ODBC berjalan dengan SQL_AUTOCOMMIT_ON, setiap perintah dianggap sebagai transaksi.
SQLPrepares Jumlah panggilan Fungsi SQLPrepare setelah SQL_PERF_START.
ExecDirects Jumlah panggilan SQLExecDirect setelah SQL_PERF_START.
SQLExecutes Jumlah panggilan SQLExecute setelah SQL_PERF_START.
KursorBuka Berapa kali driver telah membuka kursor server setelah SQL_PERF_START.
Ukuran Kursor Jumlah baris dalam kumpulan hasil yang dibuka oleh kursor setelah SQL_PERF_START.
KursorUsed Jumlah baris yang benar-benar diambil melalui driver dari kursor setelah SQL_PERF_START.
PersenCursorUsed Sama dengan CursorUsed/CursorSize. Misalnya, jika aplikasi menyebabkan driver membuka kursor server untuk melakukan "SELECT COUNT(*) FROM Authors," 23 baris akan berada dalam hasil yang ditetapkan untuk pernyataan SELECT. Jika aplikasi kemudian hanya mengambil tiga baris ini, KursorUsed/CursorSize adalah 3/23, jadi PercentCursorUsed adalah 13.043478.
AvgFetchTime Sama dengan SQLFetchTime/SQLFetchCount.
AvgCursorSize Sama dengan KursorSize/CursorOpens.
AvgCursorUsed Sama dengan CursorUsed/CursorOpens.
SQLFetchTime Jumlah waktu kumulatif yang diperlukan untuk menyelesaikan kursor server.
SQLFetchCount Jumlah pengambilan yang dilakukan terhadap kursor server setelah SQL_PERF_START.
CurrentStmtCount Jumlah handel pernyataan yang saat ini terbuka pada semua koneksi yang terbuka di driver.
MaxOpenStmt Jumlah maksimum handel pernyataan yang dibuka secara bersamaan setelah SQL_PERF_START.
SumOpenStmt Jumlah handel pernyataan yang telah dibuka setelah SQL_PERF_START.
Statistik Koneksi:
CurrentConnectionCount Jumlah pegangan koneksi aktif saat ini yang dibuka aplikasi ke server.
MaxConnectionsOpened Jumlah maksimum handel koneksi bersamaan yang dibuka setelah SQL_PERF_START.
SumConnectionsOpened Jumlah handel koneksi yang telah dibuka setelah SQL_PERF_START.
SumConnectionTime Jumlah waktu semua koneksi telah dibuka setelah SQL_PERF_START. Misalnya, jika aplikasi membuka 10 koneksi dan mempertahankan setiap koneksi selama 5 detik, maka SumConnectionTime akan menjadi 50 detik.
AvgTimeOpened Sama dengan SumConnectionsOpened/ SumConnectionTime.
Statistik Jaringan:
ServerRndTrips Berapa kali driver mengirim perintah ke server dan mendapatkan balasan.
BufferSent Jumlah paket Tabular Data Stream (TDS) yang dikirim ke SQL Server oleh driver setelah SQL_PERF_START. Perintah besar dapat mengambil beberapa buffer, jadi jika perintah besar dikirim ke server dan mengisi enam paket, ServerRndTrips bertambah satu dan BuffersSent bertambah enam.
BuffersRec Jumlah paket TDS yang diterima oleh driver dari SQL Server setelah aplikasi mulai menggunakan driver.
BytesSent Jumlah byte data yang dikirim ke SQL Server dalam paket TDS setelah aplikasi mulai menggunakan driver.
BytesRec Jumlah byte data dalam paket TDS yang diterima oleh driver dari SQL Server setelah aplikasi mulai menggunakan driver.

Statistik Waktu

Bidang SQLPERF Deskripsi
msExecutionTime Jumlah waktu kumulatif yang dihabiskan driver untuk diproses setelah SQL_PERF_START, termasuk waktu yang dihabiskan untuk menunggu balasan dari server.
msNetworkServerTime Jumlah waktu kumulatif yang dihabiskan driver untuk menunggu balasan dari server.

Lihat Juga

SQL Server Native Client (ODBC)
Membuat Profil Topik Cara Kerja Performa Driver ODBC (ODBC)