CARA: Memecahkan masalah kinerja aplikasi dengan SQL Server

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 224587 - Melihat produk di mana artikel ini berlaku.
Perbesar semua | Perkecil semua

Pada Halaman ini

RINGKASAN

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


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.

Apa yang harus Monitor

1. Menetapkan SQL Profiler menangkap jejak. Untuk melakukannya, ikuti langkah-langkah:
  1. Buka SQL Profiler.
  2. Pada Alat menu, klikOpsi.
  3. Pastikan bahwa Semua peristiwa kelas dan Semua kolom Data pilihan yang dipilih.
  4. Klik Oke.
  5. Membuat jejak baru.
  6. Pada Berkas menu, titikBaru, lalu klik Jejak.
  7. Pada General tab, menetapkan nama jejak dan file untuk menangkap data.
  8. Pada Peristiwa tab, menambahkan acara berikut jenis untuk melacak Anda:

    Perkecil tabel iniPerbesar tabel ini
    PosAcara untuk menambahkanDeskripsi
    KursorCursorPrepareAcara ini menunjukkan bahwa kursor pada pernyataan SQL telah dipersiapkan dengan menggunakan ODBC, OLEDB, atau perpustakaan DB.
    Kesalahan dan peringatanKolom yang hilang StatistikAcara 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.PerhatianAcara ini menunjukkan bahwa perhatian sinyal dikirim oleh klien.
    Misc.Auto-UpdateStatsAcara ini menunjukkan bahwa Auto Update Statistik pilihan dipicu.
    Misc.Exec siap SQLAcara ini menunjukkan bahwa ODBC, OLE DB, atau perpustakaan DB dijalankan sebelumnya disiapkan Transact-SQL pernyataan, atau pernyataan.
    Misc.Rencana pelaksanaanAcara ini menunjukkan rencana pohon Transact-SQL pernyataan yang dieksekusi.
    Misc.Mempersiapkan SQLAcara ini menunjukkan bahwa aplikasi ODBC, OLE DB, atau DB-perpustakaan siap Transact-SQL pernyataan, atau pernyataan, untuk digunakan.
    Misc.Unprepare SQLAcara ini menunjukkan yang ODBC, OLE DB, atau DB-perpustakaan aplikasi siap Transact-SQL pernyataan, atau pernyataan, untuk digunakan.
    SesiMenghubungkanAcara ini menunjukkan bahwa sambungan baru telah dibuat.
    SesiPutusAcara ini menunjukkan bahwa klien telah terputus.
    SesiAda koneksiAcara ini menunjukkan bahwa koneksi yang ada ketika jejak SQL Profiler mulai.
    Disimpan prosedurSP: selesaiIni acara menunjukkan ketika stored procedure telah menyelesaikan eksekusi.
    Disimpan prosedurSP: mengkompilasi ulangIni acara menunjukkan bahwa prosedur yang disimpan recompiled selama eksekusi.
    Disimpan prosedurSP: mulaiAcara ini menunjukkan ketika stored procedure telah mulai eksekusi.
    Disimpan prosedurSP: StmtCompletedIni acara menunjukkan ketika sebuah pernyataan pada prosedur yang disimpan telah selesai eksekusi.
    TSQL:SQL:BatchCompletedAcara ini menunjukkan bahwa batch Transact-SQL selesai. The Teks kolom menunjukkan pernyataan yang dieksekusi.
    TSQL:SQL:StmtCompletedAcara ini menunjukkan pernyataan Transact-SQL selesai. The Teks kolom menunjukkan pernyataan yang dieksekusi.
    TSQL:RPC: selesaiAcara ini menunjukkan bahwa panggilan prosedur jauh (RPC) telah selesai.
  9. 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:BatchStartingAcara ini menunjukkan mulai batch Transact-SQL. The Teks kolom menunjukkan pernyataan yang dieksekusi.
    TSQL:SQL:StmtStartingAcara ini menunjukkan awal Transact-SQL pernyataan. The Teks kolom menunjukkan pernyataan yang dieksekusi.
    TSQL:RPC: mulaiAcara ini menunjukkan awal panggilan prosedur jauh (RPC).
    Disimpan prosedurSP: StmtStartingIni 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
  10. 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:
  1. Mulai Windows NT kinerja Monitor.
  2. Pada Lihat menu, klik Log.
  3. Pada Opsi menu, klik Log.
  4. Tentukan nama berkas dan lokasi untuk log kinerja Counter. Anda dapat mengatur interval pembaruan yang sesuai.
  5. Pada Mengedit menu, klik Tambahkan ke Log.
  6. Tambahkan semua objek. Windows NT dan SQL Server objek.
  7. 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:
150934Cara 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:
251004INF: Bagaimana untuk memantau SQL Server 7.0 menghalangi

Menjalankan aplikasi di bawah beban khas

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

  1. 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:
    224453INF: Memahami dan memecahkan SQL Server 7.0 atau 2000 masalah pemblokiran
  2. 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:
    243586INF: 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:
    243589CARA: 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:
    243588CARA: 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 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 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 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.
  3. 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.

Properti

ID Artikel: 224587 - Kajian Terakhir: 19 September 2011 - Revisi: 2.0
Berlaku bagi:
  • Microsoft SQL Server 7.0 Standard Edition
Kata kunci: 
kbproductlink kbhowtomaster kbhowto kbinfo kbmt KB224587 KbMtid
Penerjemahan Mesin
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

Berikan Masukan

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com