CARA: Memecahkan masalah kinerja aplikasi dengan SQL Server

PENTING: Artikel ini diterjemahkan oleh perangkat lunak penerjemahan mesin Microsoft, dan mungkin telah diedit oleh Masyarakat Microsoft melalui teknologi CTF dan bukan oleh seorang penerjemah profesional. Microsoft menawarkan baik artikel yang diterjemahkan oleh manusia maupun artikel hasil editan terjemahan oleh mesin/komunitas, sehingga Anda dapat mengakses semua artikel di Sentra Pengetahuan yang kami miliki dalam berbagai bahasa. Namun artikel hasil editan mesin atau bahkan komunitas tidak selalu sempurna. Artikel ini dapat mengandung kesalahan dalam hal kosa kata, sintaksis atau tatabahasa, sangat mirip dengan penutur asing yang membuat kekeliruan ketika berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab atas ketidakakuratan, kesalahan atau kerugian apa pun akibat dari kekeliruan dalam penerjemahan isi atau penggunaannya oleh pelanggan kami. Microsoft juga akan senantiasa memperbarui perangkat lunak penerjemahan mesin dan alat untuk menyempurnakan Editan Hasil Penerjemahan Mesin.

Klik disini untuk melihat versi Inggris dari artikel ini: 224587
Artikel ini telah diarsipkan. Artikel ditawarkan dalam bentuk "apa adanya" dan tidak akan dapat diperbarui lagi.
Ringkasan
Artikel ini selangkah demi selangkah menjelaskan cara memecahkan masalah kinerja SQL Server. Pemecahan masalah kinerja melibatkan penggunaan serangkaian langkah-langkah untuk memisahkan dan menentukan penyebab pelambatan aplikasi. Penyebab yang mungkin meliputi:
  • Memblokir.
  • Sanggahan sumber daya sistem.
  • Masalah desain aplikasi.
  • Set tertentu permintaan atau prosedur tersimpan dengan longexecution kali.
Artikel ini menjelaskan cara menentukan sumber masalah kinerja. Hal ini juga memuat referensi artikel lainnya di Pangkalan Pengetahuan Microsoft yang mencakup rincian masalah kinerja khusus untuk pemecahan masalah tambahan.cadangan

SQL Profiler


SQL Profiler adalah alat yang kuat ketika pemecahan masalah SQL Server 7.0 atau kinerja yang lebih baru, aplikasi Anda. SQL Profiler memungkinkan Anda untuk dengan mudah menangkap semua peristiwa yang terjadi pada server di bawah beban khas, dan menyediakan informasi tentang mereka. Menggunakan SQL Profiler bersama dengan Microsoft Windows NT kinerja Monitor dan beberapa permintaan sederhana untuk mengidentifikasi apakah memblokir terjadi akan memberikan informasi yang harus Anda miliki untuk mengatasi sebagian besar masalah kinerja.

cadangan

Apa yang harus Monitor

1. mengatur SQL Profiler untuk merekam jejak. Untuk melakukannya, ikuti langkah-langkah berikut:
  1. Buka SQL Profiler.
  2. Pada menu alat , klikopsi.
  3. Pastikan bahwa Semua kejadian kelas dan Semua bidang data opsi yang dipilih.
  4. Klik OK.
  5. Membuat jejak baru.
  6. Pada File menu, arahkan kebaru, dan kemudian klik jejak.
  7. Pada tab umum , tentukan jejak nameand berkas untuk penangkapan data.
  8. Pada tab kejadian , tambahkan berikut eventtypes jejak Anda:

    JudulPeristiwa untuk menambahkanDeskripsi
    KursorCursorPrepareIni eventindicates kursor pada pernyataan SQL yang telah disiapkan menggunakan ODBC, OLEDB atau Perpustakaan DB.
    Galat dan peringatanColumnStatistics hilangPeristiwa ini menunjukkan Statistik kolom yang mungkin memiliki beenuseful untuk Pengoptimal yang tidak tersedia. Kolom teks yang menampilkan daftar kolom dengan statistik hilang. Thisevent, bersama dengan Misc: Auto-UpdateStats kejadian, menunjukkan bahwa opsi Otomatis membuat Statistik dipicu.
    Misc.PerhatianPeristiwa ini menunjukkan thatan perhatian sinyal Dikirim oleh klien.
    Misc.Auto-UpdateStatsIni eventindicates opsi Auto UpdateStatistics dipicu.
    Misc.Exec disiapkan SQLIni eventindicates bahwa a sebelumnya ODBC, OLE DB, atau Perpustakaan DB dieksekusi di preparedTransact-SQL pernyataan atau pernyataan.
    Misc.Rencana eksekusiPeristiwa ini menunjukkan struktur theplan Transact-SQL pernyataan yang dieksekusi.
    Misc.Mempersiapkan SQLIndicatesthat kejadian ini ODBC, OLE DB atau DB-Perpustakaan aplikasi siap Transact-SQLstatement, atau pernyataan, untuk digunakan.
    Misc.Unprepare SQLPeristiwa ini indicatesthat ODBC, OLE DB atau DB-Perpustakaan aplikasi siap Transact-SQLstatement, atau pernyataan, untuk digunakan.
    SesiMenyambungPeristiwa ini indicatesthat sambungan baru telah dibuat.
    SesiPutuskanPeristiwa ini indicatesthat klien telah diputus.
    SesiAda sambunganEventindicates yang ada sambungan saat SQL Profiler jejak wasstarted.
    Prosedur tersimpanSP: selesaiThisevent menunjukkan ketika prosedur yang disimpan telah menyelesaikan eksekusi.
    Prosedur tersimpanSP: mengkompilasi ulangThisevent menunjukkan bahwa prosedur yang disimpan recompiled selama eksekusi.
    Prosedur tersimpanSP: mulaiIni eventindicates ketika prosedur yang disimpan dimulai eksekusi.
    Prosedur tersimpanSP: StmtCompletedThisevent menunjukkan ketika pernyataan dalam prosedur yang disimpan telah completedexecution.
    TSQL:SQL:BatchCompletedIni eventindicates batch Transact-SQL selesai. Kolom teks menunjukkan pernyataan yang dieksekusi.
    TSQL:SQL:StmtCompletedPernyataan eventindicates Transact-SQL ini selesai. Kolom teks menunjukkan pernyataan yang dieksekusi.
    TSQL:RPC: selesaiIndicatesthat kejadian ini panggilan prosedur jauh (RPC) telah selesai.
  9. Jika aplikasi Anda akan menerima galat waktu habis, stopsresponding (macet), atau mengalami peristiwa lain yang menyebabkan problemstatements tidak pernah selesai, juga meliputi peristiwa berikut ini:

    TSQL:SQL:BatchStartingEventindicates mulai batch Transact-SQL. Kolom teks menunjukkan pernyataan yang dieksekusi.
    TSQL:SQL:StmtStartingEventindicates mulai pernyataan Transact-SQL. Kolom teks menunjukkan pernyataan yang dieksekusi.
    TSQL:RPC: mulaiIndicatesthe kejadian ini mulai panggilan prosedur jauh (RPC).
    Prosedur tersimpanSP: StmtStartingThisevent menunjukkan saat pernyataan dalam prosedur yang disimpan startingexecution.


    Ini akan membantu memastikan bahwa Anda dapat mendidih pernyataan yang mengeksekusi ketika terjadi waktu habis
  10. Pada tab bidang data , pastikan bahwa kolom berikut disertakan:

    Untuk SQL Server 2000

    Waktu mulai

    Waktu akhir

    LoginSid

    SPID

    Peristiwa kelas

    TextData

    IntegerData

    BinaryData

    Durasi

    CPU

    Membaca

    Penulisan

    nama aplikasi

    NT UserName

    DBUserName


    Untuk SQL Server 7.0

    Waktu mulai

    Waktu akhir

    ConnectionID

    SPID

    Peristiwa kelas

    Teks

    IntegerData

    Data biner

    Durasi

    CPU

    Membaca

    Penulisan

    nama aplikasi

    NT UserName

    Nama pengguna SQL

Untuk informasi tentang cara menggunakan SQL Profiler, tampakan SQL Server 7.0 dan 2000 buku daring SQL Server.


2. Gunakan Monitor kinerja untuk menangkap penghitung Windows NT dan SQL Server. Untuk melakukannya, ikuti langkah-langkah berikut:
  1. Mulai Windows NT kinerja Monitor.
  2. Pada menu tampilan , klik Log.
  3. Pada menu opsi , klik Log.
  4. Tentukan nama berkas dan lokasi untuk log performancecounters. Anda dapat menyesuaikan interval pembaruan yang sesuai.
  5. Pada Edit menu, klik Tambah ke Log.
  6. Tambahkan semua objek. Windows NT dan SQL Serverobjects.
  7. Untuk memulai log, menu opsi , klik Log, dan kemudian klik tombol tekan Mulai Log .

Untuk informasi tambahan, klik nomor artikel berikut ini untuk melihat artikel di Pangkalan Pengetahuan Microsoft:
150934 Cara membuat Log Monitor kinerja untuk NT pemecahan masalah

3. Periksa memblokir.

Untuk melihat apakah pemblokiran ini terjadi, jalankan sp_who sistem disimpan prosedur:
exec sp_who
Output ini akan berisi kolom blk . Uji hasil untuk setiap entri bukan nol yang menunjukkan bahwa pemblokiran terjadi. Menjalankan prosedur ini secara berkala seluruh kerangka waktu ketika penurunan kinerja terjadi.

Catatan Menjalankan sistem sp_who prosedur tersimpan adalah Periksa untuk melihat apakah memblokir ada. Biasanya, hal ini tidak cukup informasi untuk sepenuhnya memecahkan masalah pemblokiran. Untuk informasi tambahan, klik nomor artikel berikut ini untuk melihat artikel di Pangkalan Pengetahuan Microsoft:
251004 INF: Cara mengawasi SQL Server 7.0 memblokir

cadangan

Menjalankan aplikasi di bawah beban khas

Idealnya, terbaik untuk menangkap SQL Profiler, pemantauan kinerja dan memblokir output selama jangka waktu yang sama. Kerangka waktu ini harus mencakup waktu ketika kinerja aplikasi berjalan dari baik buruk. Kombinasi informasi ini akan membantu Anda untuk mendapatkan gambar yang lebih jelas mana penurunan kinerja terjadi.

cadangan

Menafsirkan hasil

  1. Periksa untuk memblokir.

    Jika kolom blk di sp_who output bukan nol, hal ini menunjukkan bahwa pemblokiran terjadi onyour sistem. Jika proses memblokir saling, proses yang beingblocked dapat mengalami lama waktu eksekusi. Untuk informasi tambahan, klik nomor artikel berikut ini untuk melihat artikel di Pangkalan Pengetahuan Microsoft:
    224453 INF: Memahami dan memecahkan SQL Server 7.0 atau 2000 pemblokiran masalah
  2. Periksa SQL Profiler output.

    Melihat SQLProfiler data efisien sangat berharga dalam mengatasi performanceissues. Penting untuk menyadari adalah bahwa Anda tidak harus melihat ateverything Anda menangkap. Selektif. SQL Profiler menyediakan kemampuan tohelp Anda secara efektif melihat data ditangkap. Pada tab properti (klik properti pada File menu), SQL Profiler memungkinkan Anda untuk membatasi data ditampilkan byremoving data kolom atau acara pengelompokan (penyortiran) oleh bidang data, andapplying filter. Anda dapat Telisik jejak seluruh atau hanya kolom khusus forspecific nilai (pada Edit menu, klik menemukan). Anda juga dapat menyimpan data SQL Profiler Daftar Tabel SQL Server (pada File menu, arahkan ke Simpan sebagai, klik Pelacakan Daftar Tabel), dan kemudian jalankan SQL query terhadap itu.

    Berhati-hatilah bahwa kau melakukan penyaringan hanya pada berkas jejak disimpan sebelumnya. Jika Anda performthese langkah-langkah pada jejak aktif, Anda risiko kehilangan data yang telah capturedsince jejak dimulai. Simpan aktif telusuri paling detail ke file atau Daftar Tabel pertama (pada File menu, klik Simpan sebagai) dan kemudian buka kembali (pada File menu, klik terbuka) sebelum melanjutkan. Ketika Anda bekerja pada file disimpan jejak, thefiltering secara permanen menghapus data yang telah disaring; itjust tidak menampilkan itu. Anda dapat menambah dan menghapus peristiwa dan data kolom asneeded untuk membantu fokus pencarian Anda.

    Langkah pertama dalam memeriksa berkas jejak SQLProfiler untuk kasus kinerja adalah untuk menentukan mana differenttypes peristiwa yang terjadi pada server.

    Grup byEvent jejak Class:

    a. pada File menu, klik properti.

    b. pada DataColumns tab, gunakan tombol tekan UP untuk memindahkan Kelas peristiwa di bawah tajuk grup , dan tombol tekan turun untuk menghapus semua lainnya kolom underthe grup tajuk.

    c. Klik OK.

    Pengelompokan oleh peristiwa kelas kolom showswhat jenis peristiwa yang terjadi pada SQL Server, dan seberapa sering. Kolom Searchthis kejadian berikut ini:

    SP:RECOMPILE

    Peristiwa ini menunjukkan bahwa wasrecompiled prosedur tersimpan selama eksekusi. Beberapa kejadian mengkompilasi ulang menunjukkan bahwa SQL Serveris menghabiskan sumber pada query kompilasi bukannya eksekusi query.

    Untuk pemecahan masalah tambahan informationabout recompilations prosedur tersimpan, klik nomor artikel berikut ini untuk melihat artikel di Pangkalan Pengetahuan Microsoft:
    243586 INF: Pemecahan masalah penampilan prosedur tersimpan


    Perhatian

    Perhatian sinyal menunjukkan bahwa permintaan canceledby klien. Hal ini biasanya karena salah satu dari dua penyebab:

    Userexplicitly membatalkan permintaan atau mengakhiri aplikasi.

    - atau -

    Permintaan timeout melebihi.

    Jika Anda melihat sinyal perhatian, mayindicate yang permintaan tertentu berjalan lambat.

    Untuk informasi tambahan, klik nomor artikel berikut ini untuk melihat artikel di Pangkalan Pengetahuan Microsoft:
    243589 CARA: Memecahkan masalah berjalan lambat query di SQL Server 7.0 atau yang lebih baru
    Untuk membantu mengidentifikasi permintaan yang diterima theattention sinyal, revisi jejak sehingga tidak dikelompokkan dengan datacolumn apa pun, dan filter pada proses sistem ID (SPID) yang diterima (pada tab filter , tetapkan SPID = x). Peristiwa SQL:StmtStarting, SQL:BatchStartingatau SP:StmtStarting sebelum perhatian sinyal adalah querythat menerima batas waktu atau membatalkan. Anda dapat Telisik Kejadian kelas kolom untuk peristiwa perhatian dengan mudah Telisik (pada Edit menu, klik menemukan).

    Siapkan SQL dan EXECPREPARED SQL

    Peristiwa PrepareSQL menunjukkan bahwa pernyataan applicationprepared Transact-SQL ODBC, OLE DB atau DB-Perpustakaan, atau pernyataan, untuk digunakan. Peristiwa ExecPrepared SQL menunjukkan bahwa aplikasi yang dibuat menggunakan pernyataan existingprepared untuk menjalankan perintah.

    Bandingkan jumlah timesthese dua peristiwa terjadi. Idealnya, aplikasi harus menyiapkan SQL statementone waktu dan menjalankan beberapa kali. Ini menghemat Pengoptimal ofcompiling biaya rencana baru setiap kali pernyataan yang dieksekusi. Oleh karena itu, kejadian Exec disiapkan SQL numberof harus lebih besar dari jumlah peristiwa Mempersiapkan SQL . Jika nomor peristiwa Mempersiapkan SQL kira-kira sama dengan jumlah peristiwa Exec disiapkan SQL, ini dapat menunjukkan bahwa aplikasi tidak membuat gooduse model mempersiapkan/eksekusi. Yang terbaik tidak untuk mempersiapkan pernyataan isonly yang akan dijalankan satu kali. Untuk informasi selengkapnya tentang preparingSQL laporan, lihat topik "Mempersiapkan pernyataan SQL" di SQL Server 7.0Books Online.

    Jika nomor peristiwa Exec PreparedSQL bukan tiga sampai lima kali melebihi jumlah peristiwa Mempersiapkan SQL , aplikasi mungkin tidak membuat penggunaan model theprepare/eksekusi yang efisien. Untuk informasi tambahan, klik nomor artikel berikut ini untuk melihat artikel di Pangkalan Pengetahuan Microsoft:
    243588 CARA: Memecahkan masalah kinerja Ad-Hoc permintaan

    Di SQL Server 2000, berlebihan roundtripsper mempersiapkan/eksekusi akan dihilangkan, sehingga rasio 3-5 bukan sebagai ketat. Namun, masih dapat aturan baik, untuk mencoba dan kembali siap rencana lebih dari satu kali.

    ColumnStatistics hilang

    Peristiwa ini menunjukkan theOptimizer Statistik informasi yang dapat digunakan untuk membuat yang lebih baik skema pertanyaan telah tersedia. Thisindicates bahwa permintaan tidak memiliki berguna indeks pada setidaknya satu tableinvolved. Di luar tidak memiliki indeks berguna, SQL Server tidak bahkan tidak havestatistical data tentang kolom yang terlibat untuk membuat keputusan untuk aquery rencana. Hasilnya adalah bahwa skema pertanyaan yang dihasilkan mungkin tidak optimalone. Jika Anda melihat kejadian ini, lihatlah permintaan dan eksekusi plangenerated, dan kemudian lihat artikel berikut di Microsoft pengetahuan Basefor langkah-langkah untuk meningkatkan kinerja permintaan ini:
    243589 CARA: Memecahkan masalah berjalan lambat query di SQL Server 7.0 atau yang lebih baru

    Ketika Anda melihat kejadian ColumnStatistics hilang , fokus pertama pada yang terjadi di Asosiasi withlong-menjalankan kueri. Beberapa peristiwa dapat dihasilkan dan diselesaikan automaticallyby SQL Server dengan autostats dan tidak memerlukan intervensi pengguna. Oleh karena itu, strategi terbaik adalah pertama fokus pada permintaan dengan durasi sebagai shownlater dalam artikel ini, dan catatan jika ada kejadian MissingColumn Statistik terkait.

    Jika Anda tidak melihat unsur eventclasses ini, langkah selanjutnya adalah menentukan mana waktu dikeluarkan.

    Grup jejak output byDuration:

    a. pada File menu, klik properti.

    Pada DataColumns tab, gunakan tombol tekan UP untuk memindahkan durasi di bawah tajuk grup , dan tombol tekan turun untuk menghapus semua lainnya kolom underthe gruptajuk.

    c. pada tab kejadian , Hapus semua kelompok kecuali TSQL dan StoredProcedures.

    d. Klik OK.

    Dengan pengelompokan pada durasi, Anda dapat easilysee apa pernyataan SQL, batch, atau prosedur menjalankan terendah. Ini penting untuk melihat tidak hanya pada saat ketika masalah terjadi, butalso untuk mendapatkan dasar ketika kinerja baik untuk membandingkan isvery. Anda canfilter pada waktu mulai untuk memecah jejak bagian ketika wasgood kinerja, dan bagian yang terpisah untuk saat ini kinerja yang buruk. Cari thequeries dengan durasi lama saat kinerja baik. Ini adalah mostlikely akar masalah. Jika keseluruhan kinerja sistem menurun, baik permintaan dapat menunjukkan durasi panjang seperti mereka menunggu di systemresources.

    Jika Anda melihat beberapa permintaan dengan durasi tinggi, lihat artikel di Pangkalan Pengetahuan Microsoft:
    243589 CARA: Memecahkan masalah berjalan lambat query di SQL Server 7.0 atau yang lebih baru
    Jika Anda melihat bahwa durasi individu queriesis rendah, tetapi ada beberapa mereka, dan SQL kompilasi/sec penghitung kinerja Monitor output (dijelaskan kemudian) tinggi, lihat artikel di Pangkalan Pengetahuan Microsoft:
    243588 CARA: Memecahkan masalah kinerja Ad-Hoc permintaan
    Memeriksa datacolumns tersisa:

    Tambahan wawasan sifat performanceproblem dapat diperoleh dengan melihat bidang data lainnya di data pelacakan. Hereare beberapa hal yang perlu dipertimbangkan:

    Jika penggunaan CPU tinggi, grup oleh CPU untuk mengetahui apa pertanyaan pengguna terbesar waktu CPU. Pencarianteks kolom untuk "hash" atau "Gabung" untuk menemukan apa isusing rencana eksekusi query ini bergabung dengan jenis. Mereka yang lebih CPU dan kehabisan memori intensif dari bergabung nestedloop, yang umumnya IO intensif.

    Jika disk IO thebottleneck, grup dengan membaca dan menulis. Lihat kolom nama aplikasi, NT Nama penggunadan Nama pengguna SQL untuk membantu mengisolasi sumber permintaan berjalan lama.

    bidang data bilangan bulat peristiwa pengecualian akan menunjukkan anyerrors yang dikembalikan ke klien. Anda dapat menemukan teks dari pesan theerror dengan Telisik nomor di SQL Server 7.0 BooksOnline.

    Kolom ID sambungan ini berguna untuk memastikan bahwa Anda akan melihat samesessions untuk klien tertentu. SPID tidak dapat menjamin ini, seperti mayhave pengguna terputus dan pengguna baru tersambung dan menerima SPID sama.

    Keuntungan yang Diperoleh dari bidang ini mungkin berbeda-beda dependingon skenario, tetapi mereka harus memeriksa jika kolom jelas sebelumnya inthis artikel tidak memberikan jawaban.
  3. Periksa hasil pemantauan kinerja.

    Pemantauan kinerja akan menampilkan keseluruhan sistem kertas macet. Itmay menjadi SQL Server dan aplikasi yang melakukan seperti yang diharapkan, tetapi thecomputer mencukupi, kekurangan kehabisan memori atau sumber daya lainnya. Atau certaincounters dapat menunjukkan masalah dengan cara aplikasi dan areperforming SQL Server. Minimal, periksa penghitung berikut ini:

  • Objek: proses

    Penghitung: prosesor

    Contoh: SQL Server

  • Objek: prosesor

    Penghitung: % ProcessorTime

    Contoh: Memeriksa setiap hal prosesor

  • Objek: Disk fisik

    Penghitung: Avg. Disk QueueLength

    Contoh: Memeriksa setiap diskinstance fisik

  • Objek: SQL Server: SQL Statistik

    Penghitung: SQLCompilations/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 artikel ini akan membantu Anda mempersempit bidang masalah. Masalah CPU yang tinggi dapat menunjukkan jumlah besar recompilations prosedur tersimpan, ad-hoc permintaan kompilasi atau penggunaan intensif dari bergabung hash dan gabungan. Artikel yang disebutkan sebelumnya dalam artikel ini harus diikuti untuk menentukan tentu benar tindakan. Tinggi disk antrian panjang dapat menunjukkan memerlukan lebih banyak kehabisan memori sistem atau subsistem cakram yang lebih baik.

cadangan
BOL memperlambat buruk perf Senin perfmon tshoot trouble shoot pemecahan masalah tshooting mesin

Peringatan: Artikel ini telah diterjemahkan secara otomatis

Properti

ID Artikel: 224587 - Tinjauan Terakhir: 12/05/2015 13:46:51 - Revisi: 3.0

Microsoft SQL Server 7.0 Standard Edition

  • kbnosurvey kbarchive kbproductlink kbhowtomaster kbhowto kbinfo kbmt KB224587 KbMtid
Tanggapan