Tips SistemThis article applies to a different operating system than the one you are using. Article content that may not be relevant to you is disabled.
Artikel ini selangkah demi selangkah menjelaskan bagaimana cara mengatasi SQL
Masalah kinerja server. Pemecahan masalah kinerja melibatkan penggunaan
serangkaian langkah-langkah untuk mengisolasi dan menentukan penyebab aplikasi
perlambatan. Kemungkinan penyebab meliputi:
Menghalangi.
Sistem sumber pertikaian.
Masalah desain aplikasi.
Set tertentu pertanyaan atau disimpan prosedur dengan panjang
eksekusi kali.
Artikel ini menjelaskan cara untuk menentukan sumber
masalah kinerja. Itu juga referensi lain artikel dalam Pengetahuan Microsoft
Basis yang mencakup rincian masalah kinerja spesifik untuk tambahan
pemecahan masalah.
SQL Profiler adalah alat yang ampuh ketika pemecahan masalah Anda
SQL Server 7.0, atau kemudian, aplikasi kinerja. SQL Profiler memungkinkan Anda untuk
dengan mudah menangkap semua peristiwa-peristiwa yang terjadi pada server di bawah khas
beban, dan menyediakan informasi tentang mereka. Menggunakan SQL Profiler bersama
dengan Microsoft Windows NT kinerja Monitor dan beberapa pertanyaan sederhana untuk
mengidentifikasi apakah menghalangi terjadi akan memberi Anda informasi yang Anda harus
harus memecahkan sebagian besar masalah kinerja.
1. Menetapkan SQL Profiler menangkap jejak. Untuk melakukannya, ikuti
langkah-langkah:
Buka SQL Profiler.
Pada Alat menu, klikOpsi.
Pastikan bahwa Semua peristiwa kelas dan Semua kolom Data pilihan yang dipilih.
Klik Oke.
Membuat jejak baru.
Pada Berkas menu, titikBaru, lalu klik Jejak.
Pada General tab, menetapkan nama jejak
dan file untuk menangkap data.
Pada Peristiwa tab, menambahkan acara berikut
jenis untuk melacak Anda:
Perkecil tabel iniPerbesar tabel ini
Pos
Acara untuk menambahkan
Deskripsi
Kursor
CursorPrepare
Acara ini
menunjukkan bahwa kursor pada pernyataan SQL telah dipersiapkan dengan menggunakan ODBC,
OLEDB, atau perpustakaan DB.
Kesalahan dan peringatan
Kolom yang hilang
Statistik
Acara ini menunjukkan statistik kolom yang mungkin
berguna untuk Pengoptimal yang tidak tersedia. The Teks kolom menunjukkan daftar kolom dengan statistik yang hilang. Ini
acara, bersama dengan Misc: Auto-UpdateStats acara, menunjukkan bahwa Auto membuat statistik pilihan dipicu.
Misc.
Perhatian
Acara ini menunjukkan bahwa
perhatian sinyal dikirim oleh klien.
Misc.
Auto-UpdateStats
Acara ini
menunjukkan bahwa Auto Update
Statistik pilihan dipicu.
Misc.
Exec siap SQL
Acara ini
menunjukkan bahwa ODBC, OLE DB, atau perpustakaan DB dijalankan sebelumnya disiapkan
Transact-SQL pernyataan, atau pernyataan.
Misc.
Rencana pelaksanaan
Acara ini menunjukkan
rencana pohon Transact-SQL pernyataan yang dieksekusi.
Misc.
Mempersiapkan SQL
Acara ini menunjukkan
bahwa aplikasi ODBC, OLE DB, atau DB-perpustakaan siap Transact-SQL
pernyataan, atau pernyataan, untuk digunakan.
Misc.
Unprepare SQL
Acara ini menunjukkan
yang ODBC, OLE DB, atau DB-perpustakaan aplikasi siap Transact-SQL
pernyataan, atau pernyataan, untuk digunakan.
Sesi
Menghubungkan
Acara ini menunjukkan
bahwa sambungan baru telah dibuat.
Sesi
Putus
Acara ini menunjukkan
bahwa klien telah terputus.
Sesi
Ada koneksi
Acara ini
menunjukkan bahwa koneksi yang ada ketika jejak SQL Profiler
mulai.
Disimpan prosedur
SP: selesai
Ini
acara menunjukkan ketika stored procedure telah menyelesaikan eksekusi.
Disimpan prosedur
SP: mengkompilasi ulang
Ini
acara menunjukkan bahwa prosedur yang disimpan recompiled selama eksekusi.
Disimpan prosedur
SP: mulai
Acara ini
menunjukkan ketika stored procedure telah mulai eksekusi.
Disimpan prosedur
SP: StmtCompleted
Ini
acara menunjukkan ketika sebuah pernyataan pada prosedur yang disimpan telah selesai
eksekusi.
TSQL:
SQL:BatchCompleted
Acara ini
menunjukkan bahwa batch Transact-SQL selesai. The Teks kolom menunjukkan pernyataan yang dieksekusi.
TSQL:
SQL:StmtCompleted
Acara ini
menunjukkan pernyataan Transact-SQL selesai. The Teks kolom menunjukkan pernyataan yang dieksekusi.
TSQL:
RPC: selesai
Acara ini menunjukkan
bahwa panggilan prosedur jauh (RPC) telah selesai.
Jika aplikasi Anda menerima kesalahan timeout, berhenti
merespons (hang), atau mengalami peristiwa lain yang menyebabkan masalah
pernyataan untuk tidak pernah menyelesaikan, juga termasuk peristiwa berikut:
Perkecil tabel iniPerbesar tabel ini
TSQL:
SQL:BatchStarting
Acara ini
menunjukkan mulai batch Transact-SQL. The Teks kolom menunjukkan pernyataan yang dieksekusi.
TSQL:
SQL:StmtStarting
Acara ini
menunjukkan awal Transact-SQL pernyataan. The Teks kolom menunjukkan pernyataan yang dieksekusi.
TSQL:
RPC: mulai
Acara ini menunjukkan
awal panggilan prosedur jauh (RPC).
Disimpan prosedur
SP: StmtStarting
Ini
acara menunjukkan ketika memulai sebuah pernyataan pada prosedur yang disimpan
eksekusi.
Ini akan membantu untuk memastikan bahwa Anda dapat melihat
pernyataan yang mengeksekusi ketika timeout terjadi
Pada Kolom data tab, pastikan kolom berikut disertakan:
Untuk SQL Server 2000
Waktu mulai
Akhir zaman
LoginSid
SPID
Acara kelas
TextData
IntegerData
BinaryData
Durasi
CPU
Membaca
Menulis
Nama aplikasi
Pengguna NT
Nama
DBUserName
Untuk SQL Server 7.0
Waktu mulai
Akhir zaman
Sambungan
ID
SPID
Acara kelas
Teks
Bilangan bulat
Data
Data biner
Durasi
CPU
Membaca
Menulis
Nama aplikasi
Pengguna NT
Nama
Nama pengguna SQL
Untuk informasi tentang menggunakan SQL Profiler, lihat SQL Server
7.0 dan SQL Server 2000 buku secara Online.
2. Menggunakan Monitor kinerja menangkap Windows NT dan SQL
Server Counter. Untuk melakukannya, ikuti langkah berikut ini:
Mulai Windows NT kinerja Monitor.
Pada Lihat menu, klik Log.
Pada Opsi menu, klik Log.
Tentukan nama berkas dan lokasi untuk log kinerja
Counter. Anda dapat mengatur interval pembaruan yang sesuai.
Pada Mengedit menu, klik Tambahkan ke
Log.
Tambahkan semua objek. Windows NT dan SQL Server
objek.
Untuk memulai log, pada Opsi menu, klik Log, lalu klik Mulai Log tombol.
Untuk
informasi tambahan, klik nomor artikel di bawah ini untuk melihat artikel
pada Basis Pengetahuan Microsoft:
150934
(http://support.microsoft.com/kb/150934/EN-US/
)
Cara membuat Log Monitor kinerja untuk NT pemecahan masalah
3. Periksa menghalangi.
Untuk melihat apakah
memblokir terjadi, menjalankan sp_who sistem disimpan prosedur:
exec sp_who
Output ini akan berisi Blk kolom. Memeriksa output untuk setiap entri bukan nol yang menunjukkan
bahwa menghalangi terjadi. Menjalankan prosedur ini secara berkala sepanjang
jangka waktu ketika terjadi penurunan kinerja.
Catatan Menjalankan sp_who sistem yang disimpan prosedur adalah memeriksa untuk melihat apakah menghalangi ada.
Biasanya, ini adalah tidak cukup informasi untuk sepenuhnya memecahkan menghalangi
masalah. Untuk informasi tambahan, klik artikel berikut
nomor ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
251004
(http://support.microsoft.com/kb/251004/EN-US/
)
INF: Bagaimana untuk memantau SQL Server 7.0 menghalangi
Idealnya, terbaik untuk menangkap SQL Profiler,
Monitor kinerja, dan menghalangi output selama jangka waktu yang sama. Ini
jangka waktu harus mencakup waktu ketika kinerja aplikasi berjalan dari baik untuk
Buruk. Kombinasi dari informasi ini akan membantu Anda untuk mendapatkan gambaran yang jelas
di mana kinerja perlambatan terjadi.
Menafsirkan hasil
Periksa menghalangi.
Jika Blk kolom di sp_who output bukan nol, hal ini menunjukkan bahwa menghalangi terjadi pada
sistem Anda. Jika proses yang menghalangi saling, proses yang sedang
diblokir dapat mengalami lagi eksekusi kali. Untuk tambahan
informasi, klik nomor artikel di bawah ini untuk melihat artikel di
Basis Pengetahuan Microsoft:
224453
(http://support.microsoft.com/kb/224453/EN-US/
)
INF: Memahami dan memecahkan SQL Server 7.0 atau 2000 masalah pemblokiran
Memeriksa output SQL Profiler.
Melihat SQL
Profiler data efisien sangat berharga dalam menyelesaikan kinerja
isu-isu. Yang paling penting untuk menyadari adalah bahwa Anda tidak harus melihat pada
segala sesuatu yang Anda menangkap. Selektif. SQL Profiler menyediakan kemampuan untuk
membantu Anda secara efektif melihat data ditangkap. Pada Properti tab (klik Properti pada Berkas ), SQL Profiler menu Anda dapat membatasi data yang ditampilkan oleh
menghapus data kolom atau peristiwa, pengelompokan (penyortiran) oleh kolom data, dan
menerapkan penyaring. Anda dapat mencari jejak seluruh atau hanya kolom khusus untuk
nilai-nilai tertentu (pada Mengedit menu, klik Menemukan). Anda juga dapat menyimpan data SQL Profiler tabel SQL Server
(pada Berkas menu, titik Simpan sebagai, klik Jejak tabel), dan kemudian jalankan SQL query terhadap itu.
Hati-hati yang
Anda melakukan penyaringan hanya pada file jejak yang sebelumnya telah disimpan. Jika Anda melakukan
langkah-langkah berikut pada jejak aktif, Anda berisiko kehilangan data yang telah ditangkap
sejak jejak dimulai. Menyimpan jejak aktif untuk sebuah file atau meja pertama (pada
The Berkas menu, klik Simpan sebagai) dan kemudian buka kembali (pada Berkas menu, klik Terbuka) sebelum Anda melanjutkan. Ketika Anda bekerja pada file disimpan jejak,
penyaringan tidak secara permanen menghapus data yang disaring keluar; itu
hanya menampilkan itu. Anda dapat menambah dan menghapus peristiwa dan kolom data sebagai
diperlukan untuk membantu fokus pencarian Anda.
Langkah pertama dalam memeriksa SQL
Profiler jejak file untuk kasus-kasus kinerja adalah untuk menentukan di mana yang berbeda
jenis peristiwa yang terjadi pada server.
Kelompok jejak oleh
Acara kelas:
a. di Berkas menu, klik Properti.
b. di Data
Kolom tab, gunakan tombol UP untuk memindahkan Acara kelas di bawah Kelompok pos, dan tombol ke bawah untuk menghapus semua kolom di bawah
The Kelompok judul.
c. Klik Oke.
Pengelompokan oleh acara kelas kolom menunjukkan
jenis peristiwa yang terjadi pada SQL Server, dan seberapa sering. Mencari
kolom ini berikut:
SP:RECOMPILE
Acara ini menunjukkan bahwa prosedur yang disimpan
recompiled selama eksekusi. Beberapa peristiwa mengkompilasi ulang menunjukkan bahwa SQL Server
menghabiskan sumber daya pada permintaan kompilasi bukannya eksekusi query.
Untuk tambahan informationabout disimpan prosedur pemecahan masalah
recompilations, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
243586
(http://support.microsoft.com/kb/243586/EN-US/
)
INF: Pemecahan masalah disimpan
Prosedur Recompilation
Perhatian
Sinyal perhatian menunjukkan bahwa permintaan dibatalkan
oleh klien. Hal ini umumnya karena salah satu dari dua sebab:
Pengguna
secara eksplisit membatalkan permintaan atau mengakhiri aplikasi.
-atau-
Permintaan timeout melebihi.
Jika Anda melihat sinyal perhatian, ini mungkin
menunjukkan bahwa permintaan tertentu berjalan perlahan-lahan.
Untuk informasi tambahan, klik nomor artikel berikut ini untuk melihat artikel di Pangkalan Pengetahuan Microsoft:
243589
(http://support.microsoft.com/kb/243589/EN-US/
)
CARA: Memecahkan lambat berjalan query di SQL Server 7.0 atau yang lebih baru
Untuk membantu mengidentifikasi permintaan yang diterima
perhatian sinyal, merevisi jejak sehingga tidak dikelompokkan berdasarkan data
kolom, dan filter pada sistem proses ID (SPID) yang menerima (pada Filter tab, menetapkan SPID = x). The SQL:StmtStarting, SQL:BatchStarting, atau SP:StmtStarting Peristiwa segera sebelum sinyal perhatian 's the query
yang menerima timeout atau Batal. Anda dapat mencari Acara kelas kolom untuk acara perhatian untuk dengan mudah menemukan itu (pada Mengedit menu, klik Menemukan).
Siapkan SQL dan EXEC
SIAP SQL
The Mempersiapkan
SQL acara menunjukkan bahwa aplikasi ODBC, OLE DB, atau DB-perpustakaan
menyiapkan sebuah pernyataan Transact-SQL, atau pernyataan, untuk digunakan. The Exec
Siap SQL acara menunjukkan bahwa aplikasi membuat penggunaan yang ada
pernyataan yang sudah disiapkan untuk menjalankan perintah.
Membandingkan jumlah kali
kedua peristiwa ini terjadi. Idealnya, aplikasi harus mempersiapkan sebuah pernyataan SQL
satu waktu dan menjalankan beberapa kali. Ini menghemat Pengoptimal biaya
menyusun rencana baru setiap kali pernyataan dijalankan. Oleh karena itu, nomor
dari Exec siap SQL peristiwa harus lebih besar dari jumlah Mempersiapkan SQL peristiwa. Jika jumlah Mempersiapkan SQL peristiwa kira-kira setara dengan jumlah Exec siap SQLperistiwa, ini dapat menunjukkan bahwa aplikasi tidak membuat baik
penggunaan mempersiapkan/menjalankan model. Cara terbaik tidak untuk menyiapkan sebuah pernyataan yang
hanya akan dihukum mati satu kali. Untuk informasi lebih lanjut tentang mempersiapkan
Pernyataan SQL, lihat topik "Mempersiapkan pernyataan SQL" dalam SQL Server 7.0
Buku secara Online.
Jika jumlah Exec siap
SQL peristiwa ini tidak tiga sampai lima kali lebih besar dari jumlah Mempersiapkan SQL peristiwa, aplikasi mungkin tidak membuat efisien penggunaan
mempersiapkan/menjalankan model. Untuk informasi tambahan, klik
sejumlah artikel berikut untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
243588
(http://support.microsoft.com/kb/243588/EN-US/
)
CARA: Memecahkan masalah kinerja Ad-Hoc Queries
Dalam SQL Server 2000, roundtrips berlebihan
per mempersiapkan/menjalankan akan dihilangkan, sehingga rasio 3-5 tidak sebagai ketat.
Namun, masih bisa sebuah aturan yang baik, untuk mencoba dan menggunakan kembali rencana siap lebih
dari satu kali.
Kolom yang hilang
Statistik
Acara ini menunjukkan informasi statistik
Optimizer dapat digunakan untuk menghasilkan lebih baik permintaan rencana itu tidak tersedia. Ini
menunjukkan bahwa permintaan tidak memiliki indeks berguna pada setidaknya satu meja
terlibat. Luar tidak memiliki indeks yang berguna, SQL Server tidak bahkan memiliki
data statistik tentang kolom yang terlibat untuk membuat keputusan
permintaan rencana. Hasilnya adalah bahwa rencana permintaan yang dihasilkan mungkin tidak akan optimal
salah satu. Jika Anda melihat peristiwa ini, melihat query dan rencana pelaksanaan
dihasilkan, dan kemudian melihat artikel berikut pada Basis Pengetahuan Microsoft
untuk langkah-langkah untuk mengambil untuk meningkatkan kinerja permintaan ini:
243589
(http://support.microsoft.com/kb/243589/
)
CARA: Memecahkan lambat berjalan query di SQL Server 7.0 atau yang lebih baru
Ketika Anda melihat Kolom yang hilang
Statistik peristiwa, fokus pertama pada orang-orang yang terjadi dalam hubungannya dengan
Pertanyaan berjalan lama. Beberapa peristiwa dapat dihasilkan dan diselesaikan secara otomatis
dengan SQL Server dengan autostats dan mungkin tidak memerlukan campur tangan pengguna. Oleh karena itu,
strategi yang terbaik adalah fokus pertama pada permintaan dengan durasi panjang, seperti yang ditunjukkan
kemudian dalam artikel ini, dan catatan jika ada terkait Hilang
Kolom statistik peristiwa.
Jika Anda tidak melihat contoh dari acara ini
kelas, langkah berikutnya adalah untuk menentukan di mana waktu yang dihabiskan.
Kelompok trace output oleh
Durasi:
a. di Berkas menu, klik Properti.
Pada Data
Kolom tab, gunakan tombol UP untuk memindahkan Durasi di bawah Kelompok pos, dan tombol ke bawah untuk menghapus semua kolom di bawah
The Kelompokjudul.
c. di Peristiwa tab, menghapus semua kelompok kecuali TSQL dan Disimpan
Prosedur.
d. Klik Oke.
Oleh pengelompokan pada durasi, Anda dapat dengan mudah
Lihat apa pernyataan SQL, batch atau prosedur menjalankan selamban. Itu
sangat penting untuk tidak hanya melihat waktu ketika masalah ini terjadi, tapi
juga untuk mendapatkan dasar ketika kinerja baik untuk membandingkan. Kamu bisa
menyaring pada waktu mulai untuk memecah jejak menjadi bagian ketika kinerja
baik, dan bagian terpisah untuk ketika kinerja adalah miskin. Mencari
pertanyaan dengan durasi terpanjang ketika kinerja baik. Ini sebagian besar
mungkin akar masalah. Jika kinerja sistem secara keseluruhan menurun,
bahkan baik permintaan dapat menunjukkan durasi panjang seperti mereka sedang menunggu pada sistem
sumber daya.
Jika Anda melihat jumlah kecil permintaan dengan tinggi durasi,
Lihat artikel berikut pada Basis Pengetahuan Microsoft:
243589
(http://support.microsoft.com/kb/243589/
)
CARA: Memecahkan lambat berjalan query di SQL Server 7.0 atau yang lebih baru
Jika Anda melihat bahwa durasi permintaan individu
rendah, tetapi ada beberapa dari mereka, dan SQL kompilasi/sec Counter di Monitor kinerja output (dijelaskan nanti) tinggi,
Lihat artikel berikut pada Basis Pengetahuan Microsoft:
243588
(http://support.microsoft.com/kb/243588/
)
CARA: Memecahkan masalah kinerja Ad-Hoc Queries
Memeriksa sisa data
kolom:
Tambahan wawasan sifat kinerja
masalah dapat diperoleh dengan melihat kolom data lain dalam jejak data. Sini
adalah beberapa hal yang perlu dipertimbangkan:
Jika penggunaan CPU tinggi,
kelompok oleh CPU untuk melihat pertanyaan apa yang pengguna terbesar waktu CPU. PencarianTeks kolom untuk "hash" atau "menggabungkan" untuk menemukan apa rencana eksekusi query
menggunakan jenis bergabung. Mereka adalah lebih banyak CPU dan memori intensif dari bersarang
loop bergabung, yang umumnya IO intensif.
Jika disk IO
kemacetan, kelompok dengan membaca dan menulis. Lihat Nama aplikasi, Nama pengguna NT, dan Nama pengguna SQL bidang untuk membantu mengisolasi sumber permintaan berjalan lama.
Kolom data integer acara pengecualian akan menunjukkan apapun
kesalahan yang dikembalikan ke klien. Anda dapat menemukan teks
pesan galat dengan mencari di nomor di SQL Server 7.0 buku
Online.
The Sambungan ID bidang ini membantu untuk memastikan bahwa Anda melihat pada saat yang sama
sesi untuk klien tertentu. SPID tidak dapat menjamin ini, karena pengguna mungkin
telah terputus dan pengguna baru terhubung dan menerima SPID sama.
Manfaat yang berasal dari bidang ini dapat bervariasi, tergantung
pada skenario ini, tetapi mereka harus diperiksa jika jelas bidang sebelumnya di
Artikel ini tidak memberikan jawaban.
Memeriksa output Monitor kinerja.
Monitor kinerja akan memperlihatkan kepada Anda keseluruhan sistem kemacetan. Itu
mungkin bahwa SQL Server dan aplikasi melakukan seperti yang diharapkan, tetapi
komputer underpowered, kurang memori atau sumber daya lain. Atau tertentu
Counter dapat menunjukkan masalah dengan cara aplikasi dan SQL Server
melakukan. Minimal, periksa Counter berikut:
Objek: proses
Counter: prosesor
Contoh: SQL Server
Objek: prosesor
Counter: % prosesor
Waktu
Contoh: Memeriksa setiap contoh prosesor
Objek: Disk fisik
Counter: Rata-rata Disk antrian
Panjang
Contoh: Memeriksa setiap disk fisik
contoh
Objek: SQL Server: SQL Statistik
Counter: SQL
Kompilasi/sec
Cari tren selama jangka waktu dari ketika kinerja pergi
dari baik buruk: apa meningkat pertama? Komputer CPU terikat atau DISK IO
terikat? Informasi ini, bersama dengan output Profiler sebelumnya dalam hal ini
Artikel, akan membantu Anda mempersempit area masalah. Tinggi CPU masalah mungkin
menunjukkan sejumlah besar disimpan prosedur recompilations, ad-hoc permintaan
kompilasi, atau penggunaan intensif hash dan gabungan bergabung. Artikel yang direferensikan
sebelumnya dalam artikel ini harus mengikuti untuk menentukan yang benar saja
tindakan. Tinggi disk antrian panjang dapat menunjukkan kebutuhan untuk lebih banyak memori sistem atau
subsistem disk perbaikan.
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:224587
(http://support.microsoft.com/kb/224587/en-us/
)
Mondja el, hogy miért, és tudassa velünk, miként tudnánk javítani az információ min?ségén
Köszönjük! Ez az információ segítséget nyújt számunkra, hogy fejlesszük a támogatási tartalmat. További támogatási lehet?ségekért keresse fel a következ? webhelyet: Súgó és támogatási webhely.