1. Pengenalan
1.1 Apa itu SQL Server Pemantau Aktiviti?
SQL Server Monitor Aktiviti ialah diagn terbina dalamostalat ic dalam SQL Server Studio Pengurusan yang memaparkan maklumat tentang SQL Server proses dan kesannya terhadap prestasi pelayan. Ia membolehkan anda menjejaki SQL Server proses, pantau penantian sumber, analisa pertanyaan mahal dan amati corak I/O—semuanya daripada satu antara muka.
1.2 Mengapa Menggunakan SQL Server Pemantau Aktiviti?
Monitor Aktiviti berfungsi sebagai barisan pertahanan pertama anda apabila menyelesaikan masalah prestasi. Ia memberikan keterlihatan serta-merta tentang perkara yang berlaku pada anda SQL Server contoh tanpa memerlukan pertanyaan T-SQL yang kompleks atau alat pihak ketiga.
Alat ini cemerlang dalam membantu anda mengenal pasti isu biasa dengan cepat seperti sesi menyekat, pertanyaan intensif CPU, pelaksanaan pertanyaan yang berlebihan dan kesesakan I/O. Apabila pengguna melaporkan bahawa aplikasi lambat atau tidak bertindak balas, Monitor Aktiviti membantu anda menentukan sama ada pelayan pangkalan data adalah penyebabnya.
Untuk pentadbir pangkalan data yang tidak berfungsi dengannya SQL Server setiap hari, Monitor Aktiviti menawarkan titik masuk yang boleh diakses untuk memahami aktiviti pelayan. Malah DBA yang berpengalaman menggunakannya sebagai s merekatartitik penting untuk penyiasatan prestasi.
1.3 Pemantau Aktiviti lwn Alat Pemantauan Lain
Walaupun Monitor Aktiviti bernilai, penting untuk memahami bagaimana ia dibandingkan dengan pilihan pemantauan lain:
Monitor Aktiviti lwn sp_WhoIsActive: Monitor Aktiviti menyediakan antara muka grafik dengan berbilang anak tetingkap, manakala sp_WhoIsActive ialah prosedur tersimpan komprehensif yang menawarkan maklumat lebih terperinci dalam satu set hasil tunggal. sp_WhoIsActive menunjukkan jenis tunggu tertentu yang Activity Monitor berkumpul bersama-sama dan menyediakan maklumat penyekatan yang lebih berbutir.
Monitor Aktiviti lwn sp_who2: Perintah sp_who2 tradisional menunjukkan maklumat sesi asas, tetapi Monitor Aktiviti pergi lebih jauh dengan memaparkan statistik tunggu, pertanyaan mahal dan metrik I/O dalam format visual yang teratur.
Pemantau Aktiviti lwn Alat Pihak Ketiga: Penyelesaian pemantauan komersial seperti SolarWinds Database Performance Analyzer menawarkan penjejakan sejarah, amaran dan analitik lanjutan yang tidak dimiliki oleh Monitor Aktiviti. Walau bagaimanapun, Pemantau Aktiviti tidak memerlukan tambahan cost atau pemasangan.
1.4 Faedah Utama untuk Pentadbir Pangkalan Data
Monitor Aktiviti menawarkan beberapa kelebihan yang menjadikannya alat DBA yang penting:
- Sifar Cost: Sebagai terbina dalam SQL Server Ciri Studio Pengurusan, tiada yuran pelesenan atau usaha penempatan diperlukan.
- Pemantauan Masa Nyata: Lihat aktiviti pelayan semasa semasa ia berlaku, dengan selang muat semula boleh dikonfigurasikan dari 1 saat hingga 1 jam.
- Tindakan Bersepadu: Klik kanan pada proses untuk mematikan sesi, melihat butiran pertanyaan atau melancarkan SQL Server Jejak profiler—semua dari dalam alat.
- Pelbagai Perspektif: Lihat kesihatan pelayan dari sudut berbeza melalui lima anak tetingkap khusus, setiap satu memfokuskan pada aspek prestasi tertentu.
- Penyelesaian Masalah Pantas: Kenal pasti most masalah prestasi biasa dalam beberapa minit, mempercepatkan masa min anda untuk menyelesaikan.
- Halangan Rendah untuk Masuk: Tiada pengetahuan lanjutan diperlukan untuk mula menggunakan alat dengan berkesan, walaupun lebih mendalam SQL Server kepakaran membantu dengan tafsiran.
2. Mendapat Started dengan Monitor Aktiviti
Sebelum anda boleh memanfaatkan Monitor Aktiviti dengan berkesan, anda perlu memahami prasyarat, kebenaran yang diperlukan dan pelbagai kaedah untuk melancarkan alat.
2.1 Prasyarat dan Keperluan Sistem
Untuk menggunakan SQL Server Monitor Aktiviti, anda perlukan SQL Server Studio Pengurusan (SSMS) dipasang pada mesin tempatan anda atau pelayan lompat. Alat Monitor Aktiviti telah direka semula dengan ketara dalam SQL Server 2008, jadi maklumat dalam panduan ini terpakai untuk SQL Server 2008 dan versi yang lebih baru.
Anda mesti mempunyai sambungan rangkaian ke SQL Server contoh yang anda ingin pantau. Untuk awan-hosted, anda biasanya memerlukan sambungan VPN atau peraturan firewall yang dikonfigurasikan dengan betul untuk mengakses contoh.
Monitor Aktiviti berfungsi dengan semua edisi SQL Server, termasuk Express, Standard dan Enterprise. Alat itu sendiri berjalan pada mesin klien anda dalam SSMS, jadi sumber pelayan hanya dipengaruhi oleh pertanyaan pemantauan yang dilaksanakannya.
2.2 Kebenaran yang Diperlukan
Kebenaran yang betul adalah penting untuk Monitor Aktiviti berfungsi dengan betul. Tanpa hak yang sesuai, anda mungkin melihat paparan kosong atau menerima ralat yang dinafikan akses.
2.2.1 LIHAT NEGERI SERVER Kebenaran
. LIHAT NEGERI SERVER kebenaran adalah keperluan utama untuk menggunakan Monitor Aktiviti. Kebenaran peringkat pelayan ini membolehkan anda melihat semua proses aktif dan metrik yang berkaitan dengannya.
Untuk memberikan kebenaran ini, pentadbir pelayan boleh melaksanakan:
GRANT VIEW SERVER STATE TO [YourLoginName];
Tanpa LIHAT STATE SERVER, Activity Monitor boleh dibuka tetapi tidak memaparkan data dalam mana-mana anak tetingkapnya.
2.2.2 Kebenaran Peringkat Pangkalan Data
Untuk melihat maklumat dalam anak tetingkap I/O Fail Data, anda memerlukan kebenaran tambahan. Secara khusus, anda mesti mempunyai salah satu daripada gabungan berikut:
- BUAT PANGKALAN DATA kebenaran, atau
- UBAH SEBARANG PANGKALAN DATA kebenaran, atau
- LIHAT MANA-MANA DEFINISI kebenaran
Keizinan ini mesti digabungkan dengan LIHAT NEGERI SERVER untuk kefungsian Monitor Aktiviti penuh.
2.2.3 Menyelesaikan Masalah Kebenaran
Jika Monitor Aktiviti dibuka tetapi tidak menunjukkan data, kebenaran ialah most punca biasa. Semak bahawa log masuk anda telah VIEW SERVER STATE diberikan pada peringkat pelayan. Anda boleh mengesahkan kebenaran anda dengan menjalankan:
SELECT * FROM fn_my_permissions(NULL, 'SERVER');
Cari 'LIHAT STATE SERVER' dalam lajur permission_name. Jika ia tiada, hubungi pentadbir pangkalan data anda untuk mendapatkannya.
2.3 Cara Membuka Monitor Aktiviti dalam SSMS
SQL Server Studio Pengurusan menyediakan empat kaedah berbeza untuk melancarkan Monitor Aktiviti, memberikan anda fleksibiliti berdasarkan pilihan aliran kerja anda.
2.3.1 Kaedah 1: Dari Bar Alat
Cara terpantas untuk membuka Monitor Aktiviti menggunakan ikon bar alat:
- Sambungkan ke anda SQL Server contoh di SQL Server Studio Pengurusan.
- Cari ikon Monitor Aktiviti dalam bar alat standard (ia menyerupai carta bar dengan butang main hijau).
- Klik ikon untuk melancarkan Monitor Aktiviti.
Kaedah ini paling pantas apabila anda sudah bekerja dalam SSMS dan perlu menyemak aktiviti pelayan dengan cepat.
2.3.2 Kaedah 2: Daripada Penjelajah Objek
Anda juga boleh melancarkan Monitor Aktiviti terus dari Penjelajah Objek:
- Dalam Object Explorer, cari SQL Server contoh yang anda ingin pantau.
- Klik kanan pada nama contoh.
- pilih Memantau aktiviti dari menu konteks.
Kaedah ini berguna apabila menyambung ke berbilang pelayan, kerana ia memastikan anda memantau contoh yang betul.
2.3.3 Kaedah 3: Menggunakan Pintasan Papan Kekunci
Untuk pengguna yang memfokuskan papan kekunci, SQL Server Studio Pengurusan menyediakan pintasan khusus:
- Pastikan SSMS ialah tetingkap aktif dan anda disambungkan ke contoh.
- Keratan Akhbar Ctrl + Alt + A.
- Monitor Aktiviti akan dibuka untuk contoh yang sedang dipilih dalam Penjelajah Objek.
Ambil perhatian bahawa Monitor Aktiviti akan bersambung ke mana-mana tika pelayan yang telah anda pilih dalam Penjelajah Objek, jadi pastikan anda telah memilih tika yang betul sebelum menggunakan pintasan ini.
2.3.4 Kaedah 4: Dari Menu Pilihan (StarKonfigurasi tup)
Jika anda kerap menggunakan Monitor Aktiviti, anda boleh mengkonfigurasi SSMS untuk melancarkannya secara automatik setiap kali anda start permohonan:
- In SQL Server Studio Pengurusan, navigasi ke Alatan -> Pilihan.
- Dalam kotak dialog Pilihan, kembangkan alam Sekitar, Dan kemudian pilih Startiub.
- Daripada Pada startiub senarai juntai bawah, pilih Buka Penjelajah Objek dan Monitor Aktiviti.
- pilih OK.
Pada kali seterusnya anda melancarkan SSMS dan menyambung ke pelayan, Monitor Aktiviti akan dibuka secara automatik bersama Object Explorer.
3. Memahami Anak Tetingkap Monitor Aktiviti
Monitor Aktiviti menyusun maklumat ke dalam lima anak tetingkap yang boleh dikembangkan, setiap satu memberikan perspektif yang berbeza tentang aktiviti pelayan. Memahami perkara yang dipaparkan oleh setiap anak tetingkap adalah penting untuk penyelesaian masalah yang berkesan.
3.1 Anak Tetingkap Gambaran Keseluruhan
Anak tetingkap Gambaran Keseluruhan membentangkan empat graf masa nyata yang memberi anda gambaran kesihatan pantas anda SQL Server contoh. Graf ini dikemas kini pada selang masa yang boleh dikonfigurasikan dan membantu anda mengenal pasti corak tidak normal sepintas lalu.
3.1.1 % Masa Pemproses
Graf ini menunjukkan peratusan masa yang digunakan oleh pemproses untuk melaksanakan benang tidak terbiar untuk SQL Server contoh merentas semua CPU. Nilai mewakili SQL Serverpenggunaan pemproses, bukan keseluruhan penggunaan CPU pelayan.
Jika anda sentiasa melihat masa pemproses pada atau hampir 100%, pelayan anda terikat kepada CPU. Ini mungkin menunjukkan pertanyaan yang tidak cekap, indeks yang hilang atau kapasiti perkakasan yang tidak mencukupi. Gunakan anak tetingkap Pertanyaan Mahal Terkini untuk mengenal pasti pertanyaan yang menggunakan most CPU.
3.1.2 Tugas Menunggu
Metrik ini memaparkan bilangan tugasan yang menunggu sumber dikeluarkan sebelum ia boleh diteruskan. Tugasan mungkin menunggu CPU, I/O, memori atau kunci.
Bilangan tugas menunggu yang tinggi secara konsisten menunjukkan perbalahan sumber. Anak tetingkap Resource Waits memberikan butiran lanjut tentang jenis sumber yang menyebabkan penantian.
3.1.3 Pangkalan Data I/O (MB/s)
Graf ini menunjukkan kadar pemindahan data antara memori dan cakera. Ia menggabungkan kedua-dua membaca dan menulis, diukur dalam megabait sesaat.
Lonjakan dalam I/O pangkalan data boleh menunjukkan pertanyaan yang melakukan imbasan jadual besar, aktiviti pembalakan yang berlebihan atau operasi pusat pemeriksaan. Anak tetingkap I/O Fail Data memecahkan aktiviti I/O mengikut pangkalan data dan fail.
3.1.4 Permintaan Kelompok/saat
Metrik ini mewakili bilangan SQL Server kelompok yang diterima oleh contoh sesaat. Satu kelompok boleh menjadi satu pernyataan atau beberapa pernyataan yang diserahkan bersama.
Nilai ini memberi anda gambaran keseluruhan aktiviti pelayan. Penurunan mendadak dalam permintaan kelompok semasa waktu perniagaan biasa mungkin menunjukkan masalah sambungan aplikasi atau masalah yang dihadapi pengguna.
3.1.5 Menetapkan Selang Segar Semula
Anda boleh menyesuaikan kekerapan Monitor Aktiviti mengemas kini datanya:
- Klik kanan di mana-mana dalam anak tetingkap Gambaran Keseluruhan.
- pilih Selang Segar.
- Pilih selang daripada nilai yang dipratentukan: 1 saat, 5 saat, 10 saat (lalai), 30 saat, 1 minit atau 1 jam.
Menetapkan selang muat semula di bawah 10 saat meningkatkan overhed pemantauan pada pelayan anda. Untuk sistem pengeluaran di bawah beban berat, pertimbangkan untuk menggunakan selang 30 saat atau lebih lama untuk meminimumkan kesan.
3.2 Anak Tetingkap Proses
Anak tetingkap Proses memaparkan maklumat tentang sesi yang sedang dijalankan pada anda SQL Server contoh. Anak tetingkap ini penting untuk mengenal pasti siapa yang melakukan perkara dan mengesan isu penyekatan.
3.2.1 Memahami Maklumat Proses
Setiap baris dalam anak tetingkap Proses mewakili sesi aktif pada pelayan. Anak tetingkap menunjukkan sesi daripada semua pangkalan data dan semua pengguna, memberikan anda pandangan menyeluruh tentang aktiviti pelayan.
Maklumat yang dipaparkan termasuk nama log masuk, nama aplikasi, hostnama, pangkalan data sedang diakses, dan arahan semasa. Ini membantu anda mengaitkan aktiviti pangkalan data dengan pengguna atau aplikasi tertentu.
3.2.2 Lajur Utama Diterangkan
Memahami lajur utama membantu anda mentafsir maklumat proses dengan berkesan:
- ID Sesi: Pengecam unik untuk setiap sambungan. Proses sistem menggunakan ID sesi negatif.
- Proses Pengguna: Menunjukkan sama ada ini sesi pengguna (Ya) atau proses sistem (Tidak).
- Login: . SQL Server log masuk atau akaun Windows yang dikaitkan dengan sesi.
- Pangkalan data: Konteks pangkalan data semasa untuk sesi.
- Keadaan Tugas: Menunjukkan perkara yang sedang dilakukan oleh sesi (BERJALAN, DIGANTUNG, TIDUR, dsb.).
- Command: Jenis arahan yang sedang dilaksanakan (SELECT, INSERT, UPDATE, dll.).
- Permohonan: Nama aplikasi yang mencipta sambungan.
- Menunggu masa: Berapa lama (dalam milisaat) sesi menunggu sumber.
- Jenis Tunggu: Jenis sumber khusus yang sedang menunggu sesi.
- Masa CPU: Jumlah masa CPU yang digunakan oleh sesi ini sejak ia disambungkan.
- Penggunaan Memori: Jumlah memori (dalam KB) yang diperuntukkan pada sesi pada masa ini.
3.2.3 Proses Penapisan dan Isih
Anak tetingkap Proses termasuk keupayaan penapisan yang berkuasa untuk membantu anda memfokus pada sesi yang berkaitan:
- Klik anak panah lungsur dalam mana-mana pengepala lajur.
- Penapis menunjukkan nilai yang tersedia untuk lajur itu, termasuk Semua, Kosong, dan Bukan Kosong.
- Pilih nilai khusus untuk menapis paparan kepada sesi tersebut sahaja.
Sebagai contoh, anda boleh menapis Keadaan Tugas untuk menunjukkan hanya sesi RUNNING, atau penapis Pangkalan Data untuk melihat aktiviti terhadap pangkalan data tertentu.
Anda juga boleh mengisih mengikut mana-mana lajur dengan mengklik pengepalanya. Klik sekali untuk tertib menaik, dua kali untuk tertib menurun.
3.2.4 Mengenalpasti Sesi Menyekat dan Disekat
Anak tetingkap Proses membantu anda mengenal pasti senario penyekatan di mana satu sesi menghalang orang lain daripada meneruskan:
- Disekat Oleh: Menunjukkan ID Sesi bagi sesi yang menyekat sesi ini. Jika lajur ini mengandungi nilai, sesi sedang menunggu kunci yang dipegang oleh sesi lain.
- Penyekat Kepala: Memaparkan '1' jika sesi ini menyekat orang lain tetapi tidak disekat sendiri. Ini adalah punca rantai yang menyekat.
Untuk menyiasat isu penyekat, mula-mula kenal pasti penyekat kepala (sesi yang ditandakan dengan '1' dalam lajur Penyekat Kepala), kemudian periksa perkara yang dilakukannya dan tentukan sama ada untuk membiarkannya melengkapkan atau menamatkannya.
3.2.5 Tindakan Proses (Bunuh, Butiran, Jejak)
Monitor Aktiviti membolehkan anda mengambil tindakan pada sesi individu:
- Klik kanan pada mana-mana sesi dalam anak tetingkap Proses.
- Anda akan melihat beberapa pilihan:
- Details: Menunjukkan arahan terakhir yang dilaksanakan oleh sesi ini.
- Proses Bunuh: Menamatkan sesi (gunakan dengan berhati-hati).
- Proses Jejak masuk SQL Server profiler: Lancar SQL Server Profil dan menapis secara automatik untuk menunjukkan hanya aktiviti daripada sesi ini.
Pilihan Butiran menunjukkan kepada anda teks arahan, tetapi ambil perhatian bahawa ini ialah lepas arahan dilaksanakan—ia mungkin masih tidak berjalan. Pilihan Trace amat berguna apabila anda perlu melihat urutan lengkap arahan yang sedang dijalankan oleh sesi.
3.3 Anak Tetingkap Menunggu Sumber
Anak tetingkap Resource Waits meringkaskan statistik menunggu, menunjukkan jenis sesi sumber yang sedang menunggu untuk most kerap. Maklumat ini penting untuk mendiagnosis kesesakan prestasi.
3.3.1 Memahami Statistik Tunggu
Bila SQL Server tidak boleh memberikan permintaan sumber dengan segera (seperti kunci, masa CPU atau memori), tugas yang meminta memasuki keadaan menunggu. Statistik menunggu menjejaki tempoh menunggu ini dan membantu anda memahami di mana pelayan menghabiskan masa menunggu dan bukannya bekerja.
Anak tetingkap Resource Waits mengumpul data daripada pandangan pengurusan dinamik sistem seperti sys.dm_os_wait_stats dan sys.dm_exec_requests. Pada setiap selang muat semula, ia mengira perbezaan antara syot kilat semasa dan sebelumnya, menunjukkan kepada anda kadar pengumpulan untuk setiap jenis menunggu.
3.3.2 Kategori Tunggu
Monitor Aktiviti mengumpulkan ratusan jenis menunggu individu ke dalam kategori yang lebih luas untuk memudahkan tafsiran:
- CPU: Tugas menunggu masa CPU tersedia.
- Selak Penampan: Menunggu objek penyegerakan jangka pendek yang melindungi akses kepada halaman data dalam ingatan. Kategori ini termasuk menunggu selak halaman (PAGELATCH_*).
- Kunci: Penantian disebabkan oleh sesi memegang kunci yang diperlukan oleh sesi lain.
- memori: Menunggu geran memori yang diperlukan oleh operasi seperti pengisihan dan pencincangan.
- Rangkaian I/O: Menunggu menghantar data kepada atau menerima data daripada pelanggan.
- SQL CLR: Penantian berkaitan dengan pelaksanaan Common Language Runtime.
Walaupun pengelompokan ini memudahkan pandangan, ia juga mengaburkan butiran penting. Sebagai contoh, "Buffer Latch" mungkin mengumpulkan PAGELATCH_SH, PAGELATCH_UP dan PAGELATCH_EX menunggu, yang mempunyai implikasi yang berbeza untuk prestasi.
3.3.3 Mentafsir Masa Menunggu dan Tugasan Menunggu
Anak tetingkap Resource Waits memaparkan dua metrik utama untuk setiap kategori tunggu:
- Masa Menunggu Terkumpul (ms): Jumlah milisaat terkumpul semasa selang muat semula semasa untuk kategori menunggu ini.
- Tugas Menunggu: Bilangan tugas sedang menunggu sumber dalam kategori ini.
Nilai masa menunggu sangat menarik. Jika anda mempunyai selang muat semula 10 saat dan melihat 20,000ms masa menunggu untuk kategori, itu menunjukkan berbilang menunggu serentak (20,000ms / 10,000ms = purata 2 menunggu serentak semasa selang itu).
3.3.4 Mengenalpasti Kesesakan Prestasi
Gunakan anak tetingkap Resource Waits untuk mengenal pasti di mana pelayan anda membelanjakan most masa menunggu:
- Kembangkan anak tetingkap Resource Waits.
- Perhatikan kategori tunggu yang mengumpul masa menunggu tertinggi.
- Disusun mengikut Masa Menunggu Terkumpul untuk melihat sumber yang most dikekang.
Penantian Selak Penampan Tinggi sering menunjukkan perbalahan untuk halaman data dalam ingatan, yang mungkin mencadangkan kesesakan I/O atau perbalahan tempdb. High Lock menunggu untuk menyekat isu. Menunggu Memori Tinggi mencadangkan pemberian memori yang tidak mencukupi untuk operasi pertanyaan.
3.4 Anak Tetingkap I/O Fail Data
Anak tetingkap I/O Fail Data menunjukkan aktiviti cakera untuk setiap fail pangkalan data pada pelayan anda, membantu anda mengenal pasti kesesakan I/O dan memahami corak penggunaan cakera.
3.4.1 Memahami Metrik I/O
Anak tetingkap I/O Fail Data memaparkan beberapa metrik untuk setiap fail pangkalan data:
- Pangkalan data: Nama pangkalan data.
- Jenis fail: Sama ada Data (termasuk jadual dan indeks) atau Log (log urus niaga).
- Nama Logik: Nama fail logik seperti yang ditakrifkan dalam SQL Server.
- MB/saat Baca: Kadar data dibaca daripada fail ini.
- MB/saat Ditulis: Kadar data yang ditulis ke fail ini.
- Masa Respons (ms): Purata masa tindak balas untuk operasi I/O pada fail ini.
Metrik ini dimuat semula pada selang waktu yang sama seperti anak tetingkap Gambaran Keseluruhan, memberikan anda keterlihatan masa nyata ke dalam aktiviti cakera.
3.4.2 Mengenalpasti Bottleneck I/O
Perhatikan corak ini yang menunjukkan isu prestasi I/O:
- Masa Respons Tinggi: Masa tindak balas secara konsisten melebihi 15-20ms mencadangkan subsistem cakera perlahan. Masa tindak balas melebihi 50ms menunjukkan kesesakan I/O yang serius.
- Beban Tidak Seimbang: Jika satu fail data menunjukkan kadar I/O yang jauh lebih tinggi daripada yang lain dalam pangkalan data yang sama, anda mungkin mendapat manfaat daripada menambah fail tambahan untuk mengagihkan beban.
- Aktiviti Tempdb Berlebihan: Kadar I/O yang tinggi pada fail tempdb selalunya menunjukkan pertanyaan yang mencipta set hasil perantaraan yang besar atau menggunakan rancangan pelaksanaan yang tidak cekap.
3.4.3 Analisis Fail Pangkalan Data
Gunakan anak tetingkap I/O Fail Data untuk memahami cara pangkalan data anda menggunakan sumber cakera:
- Kembangkan anak tetingkap I/O Fail Data.
- Disusun mengikut MB/saat Baca or MB/saat Ditulis untuk mengenal pasti most fail aktif.
- Perhatikan sebarang fail dengan aktiviti tinggi secara konsisten atau masa respons yang panjang.
- Rujuk silang maklumat ini dengan anak tetingkap Pertanyaan Mahal Terkini untuk mengenal pasti pertanyaan yang mendorong beban I/O.
3.5 Anak Tetingkap Pertanyaan Mahal Terkini
Anak tetingkap Pertanyaan Mahal Terkini selalunya ialah most anak tetingkap berharga untuk menyelesaikan masalah prestasi aplikasi. Ia menunjukkan pertanyaan yang menggunakan sumber pelayan yang besar, membantu anda mengenal pasti peluang pengoptimuman.
3.5.1 Memahami Metrik Pertanyaan
Monitor Aktiviti memaparkan beberapa metrik untuk setiap pertanyaan mahal:
- Pelaksanaan/min: Berapa kali pertanyaan dilaksanakan pada saat akhir.
- CPU (ms/sec): Masa CPU yang digunakan oleh pertanyaan ini sesaat.
- Bacaan Fizikal/saat: Bilangan cakera fizikal dibaca sesaat untuk pertanyaan ini.
- Tulisan Logik/saat: Bilangan penulisan logik (untuk menampan cache) sesaat.
- Bacaan Logik/saat: Bilangan bacaan logik (dari cache penimbal) sesaat.
- Purata Tempoh (ms): Purata masa pelaksanaan untuk pertanyaan ini.
- Kiraan Pelan: Bilangan rancangan pelaksanaan dalam cache untuk pertanyaan ini.
Metrik ini membantu anda memahami bukan sahaja pertanyaan yang mahal, tetapi mengapa ia mahal dan berapa kerap ia dijalankan.
3.5.2 Pilihan Isih
Anda boleh mengisih anak tetingkap Pertanyaan Mahal Terkini mengikut metrik yang berbeza untuk mencari jenis masalah yang berbeza:
- Klik mana-mana pengepala lajur untuk mengisih mengikut metrik tersebut.
- Strategi pengisihan biasa termasuk:
- Isih mengikut CPU: Cari pertanyaan yang menggunakan most masa pemproses.
- Isih mengikut Pelaksanaan/min: Kenal pasti pertanyaan yang sering dijalankan secara berlebihan.
- Isih mengikut Bacaan Fizikal: Cari pertanyaan yang menyebabkan most cakera I/O.
- Isih mengikut Purata Tempoh: Cari pertanyaan yang sudah lama dijalankan.
Apabila menyelesaikan masalah isu prestasi, cuba susun mengikut berbilang lajur untuk mendapatkan perspektif yang berbeza. Pertanyaan dengan penggunaan CPU sederhana tetapi pelaksanaan yang sangat tinggi setiap minit mungkin menjadi masalah sebenar anda.
3.5.3 Melihat Teks Pertanyaan
Untuk melihat kenyataan SQL sebenar di sebalik pertanyaan mahal:
- Klik kanan pada baris pertanyaan dalam anak tetingkap Pertanyaan Mahal Terkini.
- pilih Edit Teks Pertanyaan.
- Tetingkap pertanyaan baharu dibuka memaparkan pernyataan SQL yang lengkap.
Ini membolehkan anda memeriksa logik pertanyaan dan mengenal pasti peluang pengoptimuman yang berpotensi. Anda kemudian boleh menyalin teks pertanyaan untuk menguji versi diubah suai.
3.5.4 Menganalisis Rancangan Pelaksanaan
Pelan pelaksanaan menunjukkan kepada anda caranya SQL Server melaksanakan pertanyaan, mendedahkan ketidakcekapan seperti indeks yang hilang atau jenis gabungan yang tidak sesuai:
- Klik kanan pada baris pertanyaan dalam anak tetingkap Pertanyaan Mahal Terkini.
- pilih Tunjukkan Pelan Pelaksanaan.
- SQL Server Studio Pengurusan memaparkan perwakilan grafik tentang cara pertanyaan dilaksanakan.
Cari operasi yang menggunakan peratusan besar pertanyaan cost, amaran tentang kehilangan statistik atau indeks, dan operasi imbasan jadual yang tidak dijangka. Ini selalunya menunjukkan di mana usaha pengoptimuman harus ditumpukan.
3.5.5 Mengenalpasti Pertanyaan Bermasalah
Perhatikan corak ini dalam anak tetingkap Pertanyaan Mahal Terkini:
- Eksekusi Berlebihan: Pertanyaan yang melaksanakan beribu-ribu kali seminit mungkin menunjukkan masalah pertanyaan N+1 di mana kod aplikasi memanggil pangkalan data dalam gelung.
- Bacaan Fizikal Tinggi: Pertanyaan dengan kadar bacaan fizikal yang tinggi kerap memukul cakera, mencadangkan indeks yang hilang atau pertanyaan yang ditulis dengan buruk.
- CPU Tinggi dengan Tempoh Rendah: Banyak pertanyaan pantas yang menggunakan banyak CPU secara agregat boleh memberi kesan kepada prestasi pelayan sama seperti beberapa pertanyaan perlahan.
- Kiraan Pelan Berbilang: Pertanyaan yang mempunyai banyak pelan pelaksanaan mungkin mengalami isu penghidu parameter atau pertanyaan tidak berparameter yang menyebabkan kembung cache pelan.
4. Menggunakan Monitor Aktiviti untuk Penyelesaian Masalah Prestasi
Monitor Aktiviti benar-benar bersinar apabila anda menggunakannya secara sistematik untuk mendiagnosis dan menyelesaikan masalah prestasi. Bahagian ini merangkumi senario penyelesaian masalah biasa dan cara mendekatinya.
4.1 Mendiagnosis Pelaksanaan Pertanyaan Berlebihan
Salah seorang daripada merekaost masalah prestasi biasa ialah pertanyaan yang dilaksanakan jauh lebih kerap daripada yang diperlukan, selalunya disebabkan oleh isu reka bentuk aplikasi.
4.1.1 Mengenalpasti Pertanyaan Berulang
Untuk melihat pertanyaan yang dijalankan terlalu kerap:
- Buka Monitor Aktiviti dan kembangkan Pertanyaan Mahal Terkini pane.
- Disusun mengikut Pelaksanaan/min (eksekusi seminit).
- Cari pertanyaan di bahagian atas dengan kiraan pelaksanaan yang kelihatan tidak munasabah tinggi.
- Klik kanan pertanyaan suspek dan pilih Edit Teks Pertanyaan untuk memeriksa pernyataan SQL.
Sebagai contoh, jika anda melihat penyataan SELECT mudah melaksanakan 37,000 kali seminit, persoalkan sama ada aplikasi benar-benar perlu memanggil pertanyaan ini dengan kerap. Most pertanyaan yang melaksanakan lebih daripada beberapa ribu kali seminit penyiasatan waran.
4.1.2 Analisis Punca Punca
Pelaksanaan pertanyaan yang berlebihan biasanya berpunca daripada isu ini:
- Masalah Pertanyaan N+1: Kod aplikasi mendapatkan semula senarai item, kemudian melaksanakan pertanyaan berasingan untuk setiap item untuk mengambil data berkaitan. Ini mencipta N pertanyaan tambahan dengan N ialah bilangan item.
- Caching tiada: Aplikasi menanyakan pangkalan data untuk data itu rarely berubah dan bukannya menyimpannya dalam memori aplikasi.
- Gelung Pengundian: Kod berulang kali menanyakan pangkalan data untuk menyemak perubahan keadaan dan bukannya menggunakan pemberitahuan perubahan atau baris gilir mesej.
- Ketidakcekapan ORM: Rangka Kerja Entiti dan alatan yang serupa kadangkala menjana corak pertanyaan yang tidak cekap apabila pembangun tidak memahami cara kod mereka diterjemahkan kepada SQL.
Untuk menentukan punca utama, jejak pertanyaan kembali ke kod aplikasi. Perhatikan Permohonan dan Log Masuk lajur dalam anak tetingkap Proses apabila pertanyaan dilaksanakan. Anda juga boleh klik kanan proses dan pilih Proses Jejak masuk SQL Server Profil untuk melihat corak panggilan.
4.1.3 Penyelesaian dan Amalan Terbaik
Sebaik sahaja anda telah mengenal pasti pelaksanaan pertanyaan yang berlebihan, pertimbangkan penyelesaian ini:
- Pemprosesan Kelompok: Ubah suai kod aplikasi untuk mendapatkan berbilang item dalam satu pertanyaan menggunakan klausa gabungan atau IN dan bukannya melaksanakan pertanyaan berasingan dalam gelung.
- Caching Keputusan: Cache kerap diakses, jarang menukar data dalam memori aplikasi dengan masa tamat tempoh yang sesuai.
- Bersemangat Memuatkan: Konfigurasikan ORM untuk menggunakan strategi pemuatan bersemangat yang mengambil data berkaitan dalam pertanyaan yang lebih sedikit dan lebih cekap.
- Parameterisasi Pertanyaan: Pastikan pertanyaan menggunakan parameter dan bukannya menggabungkan nilai, yang meningkatkan penggunaan semula cache pelan dan mengurangkan overhed kompilasi.
4.2 Menyiasat Isu Penyekatan
Penyekatan berlaku apabila satu sesi memegang kunci yang menghalang sesi lain daripada meneruskan. Ini menjelma sebagai masa respons aplikasi yang perlahan dan pengguna yang kecewa.
4.2.1 Mengenalpasti Rantaian Menghalang
Untuk mengesan dan menganalisis penyekatan:
- Buka Monitor Aktiviti dan kembangkan Proses pane.
- Cari sesi dengan nilai dalam Disekat Oleh lajur—ini sedang menunggu kunci yang dipegang oleh sesi lain.
- Cari sesi dengan '1' dalam Penyekat Kepala lajur—ini adalah punca rantaian terhalang.
- Perhatikan ID sesi daripada penyekat kepala.
- Klik kanan sesi penyekat kepala dan pilih Butiran untuk melihat arahan yang sedang dilaksanakannya.
Memahami rantai menyekat adalah penting. Penyekat kepala ialah sesi yang anda perlukan untuk menyiasat, bukan sesi yang disekat di hiliran.
4.2.2 Memahami Jenis Kunci
. Jenis Tunggu lajur dalam anak tetingkap Proses menunjukkan jenis sesi yang disekat kunci sedang menunggu:
- LCK_M_X: Tunggu kunci eksklusif, biasanya disebabkan oleh operasi KEMASKINI, PADAM atau INSERT.
- LCK_M_S: Tunggu kunci dikongsi, biasanya SELECT penyata menunggu kunci eksklusif dikeluarkan.
- LCK_M_U: Kemas kini kunci tunggu, jenis kunci perantaraan yang digunakan semasa kemas kini.
- LCK_M_IX: Niat menunggu kunci eksklusif, menunjukkan halaman atau perbalahan kunci peringkat baris.
. Tunggu Sumber lajur menunjukkan objek pangkalan data yang sedang dikunci, membantu anda memahami jadual atau indeks yang terlibat dalam perbalahan.
4.2.3 Menyelesaikan Isu Penyekatan
Sebaik sahaja anda telah mengenal pasti sesi penyekatan dan perkara yang dilakukannya, anda mempunyai beberapa pilihan:
- Tunggu Selesai: Jika penyekat kepala menjalankan pertanyaan yang sah yang akan selesai tidak lama lagi, mungkin lebih baik untuk membiarkannya selesai secara semula jadi.
- Bunuh Sesi: Jika penyekat kepala tersekat atau menjalankan pertanyaan yang harus dibatalkan:
- Klik kanan sesi dalam anak tetingkap Proses.
- pilih Proses Bunuh.
- Sahkan tindakan dalam kotak dialog.
- Optimumkan Pertanyaan: Jika penyekatan berulang dengan pertanyaan yang sama, optimumkannya untuk mengurangkan tempoh pengunciannya.
- Laraskan Tahap Pengasingan: Pertimbangkan untuk menggunakan READ COMMITTED SNAPSHOT ISOLATION untuk mengurangkan sekatan dalam beban kerja berat baca.
- Penalaan Indeks: Tambahkan indeks untuk mempercepatkan pertanyaan, mengurangkan tempoh mereka memegang kunci.
4.3 Menganalisis Penggunaan CPU yang Tinggi
Apabila anak tetingkap Gambaran Keseluruhan menunjukkan masa pemproses secara konsisten pada atau hampir 100%, anda perlu mengenal pasti pertanyaan yang bertanggungjawab dan menentukan sama ada ia boleh dioptimumkan.
4.3.1 Mengenalpasti Pertanyaan Intensif CPU
Untuk mencari pertanyaan yang menggunakan CPU berlebihan:
- Buka Pertanyaan Mahal Terkini pane.
- Disusun mengikut CPU (ms/sec) untuk menunjukkan pertanyaan menggunakan most masa CPU.
- Periksa pertanyaan teratas dalam senarai.
- Klik kanan pada pertanyaan CPU tinggi dan pilih Edit Teks Pertanyaan untuk melihat pernyataan SQL.
- pilih Tunjukkan Pelan Pelaksanaan untuk memahami bagaimana pertanyaan itu dilaksanakan.
Beri perhatian bukan sahaja kepada penggunaan CPU pertanyaan individu tetapi juga kepada Pelaksanaan/min lajur. Pertanyaan menggunakan CPU sederhana setiap pelaksanaan tetapi berjalan beribu kali seminit boleh menjadi pengguna CPU terbesar anda.
4.3.2 Teknik Pengoptimuman Pertanyaan
Pendekatan biasa untuk mengurangkan penggunaan CPU termasuk:
- Tambah Indeks yang Hilang: Indeks mencari penggunaan CPU yang jauh lebih sedikit daripada imbasan jadual. Cari cadangan indeks yang hilang dalam rancangan pelaksanaan.
- Tulis Semula Pertanyaan Tidak Cekap: Gantikan kursor dengan operasi berasaskan set, hapuskan fungsi yang tidak diperlukan dalam klausa WHERE dan alih keluar cantuman berlebihan.
- Kemas kini Statistik: Perangkaan lapuk sebab SQL Server untuk memilih rancangan pelaksanaan yang tidak cekap. Jalankan STATISTIK KEMASKINI pada jadual yang terjejas.
- Kurangkan Kelantangan Data: Tambahkan klausa WHERE untuk menapis data lebih awal, gunakan TOP atau OFFSET/FETCH untuk penomboran dan elakkan SELECT *.
- Betulkan Parameter Menghidu: Gunakan OPTION (RECOMPILE), pembayang pertanyaan atau panduan pelan apabila menghidu parameter menyebabkan masalah.
4.4 Menyiasat Isu Ingatan
Tekanan memori boleh menyebabkan pertanyaan tumpah ke cakera, merendahkan prestasi dengan ketara. Monitor Aktiviti membantu anda mengenal pasti operasi intensif memori.
4.4.1 Memahami Metrik Ingatan
. Penggunaan Memori lajur dalam anak tetingkap Proses menunjukkan memori yang diperuntukkan kepada setiap sesi dalam kilobait. Penggunaan memori yang tinggi oleh satu sesi selalunya menunjukkan:
- Operasi isihan atau cincang besar yang tidak dapat dimuatkan dalam memori yang diberikan pada mulanya
- Pertanyaan mendapatkan set hasil yang besar
- Keselarian yang berlebihan mencipta banyak salinan pengendali pelan pelaksanaan
- Kebocoran memori dalam prosedur atau fungsi yang disimpan CLR
Anak tetingkap Resource Waits mungkin menunjukkan Memori menunggu apabila pertanyaan tidak dapat memperoleh geran memori yang mencukupi dan mesti menunggu sehingga memori tersedia.
4.4.2 Mengenalpasti Pertanyaan Intensif Memori
Untuk mencari pertanyaan yang menyebabkan tekanan ingatan:
- Dalam Proses anak tetingkap, susun mengikut Penggunaan Memori untuk melihat sesi memakan most memori.
- Sesi klik kanan dengan penggunaan memori yang tinggi dan pilih Butiran untuk melihat pertanyaan mereka.
- Dalam Pertanyaan Mahal Terkini anak tetingkap, cari pertanyaan dengan tinggi Bacaan Logik or Tulisan Logik, kerana ini sering dikaitkan dengan penggunaan memori.
- Periksa rancangan pelaksanaan untuk operator Padanan Isih dan Hash, yang menggunakan geran memori.
Pertanyaan yang menunjukkan amaran "Memory Grant" dalam rancangan pelaksanaan atau amaran tumpahan menunjukkan masalah tekanan memori.
4.5 Mengesan Masalah Prestasi Aplikasi
Apabila pengguna melaporkan masa respons aplikasi yang perlahan, Monitor Aktiviti membantu anda menentukan sama ada pangkalan data adalah halangan.
4.5.1 Menghubungkaitkan Pemantau Aktiviti dengan Isu Aplikasi
Untuk menyiasat kelambatan aplikasi:
- Perhatikan masa yang tepat pengguna melaporkan masalah dan aplikasi yang terjejas.
- Buka Monitor Aktiviti dan semak Pengenalan anak tetingkap untuk lonjakan sumber pada masa itu.
- Dalam Proses anak tetingkap, tapis mengikut Permohonan untuk menunjukkan hanya sambungan daripada aplikasi yang terjejas.
- Cari yang tinggi Menunggu masa nilai, yang menunjukkan kelewatan pangkalan data.
- Periksa Pertanyaan Mahal Terkini anak tetingkap untuk pertanyaan daripada aplikasi itu yang menggunakan sumber penting.
Jika pangkalan data tidak menunjukkan aktiviti luar biasa semasa pengguna mengalami kelembapan, masalahnya mungkin terletak pada kod aplikasi, kependaman rangkaian atau prestasi pihak klien.
4.5.2 Mengenalpasti Corak Aplikasi yang Tidak Cekap
Monitor Aktiviti mendedahkan beberapa anti-corak dalam reka bentuk aplikasi:
- Aplikasi Chatty: Banyak pertanyaan kecil dan bukannya pertanyaan yang lebih sedikit dan lebih cekap. Dikenal pasti melalui kiraan sambungan yang tinggi dan banyak pertanyaan mudah dalam Pertanyaan Mahal Terkini.
- N+1 Pertanyaan: Satu pertanyaan diikuti dengan N pertanyaan tambahan untuk data berkaitan. Ditunjukkan sebagai pertanyaan mudah dengan pelaksanaan yang sangat tinggi setiap minit.
- Set Keputusan Besar: Aplikasi yang mendapatkan lebih banyak data daripada yang diperlukan. Cari yang tinggi Bacaan Logik digabungkan dengan pertanyaan SELECT * yang mudah.
- Tamat masa tiada: Aplikasi yang tidak menetapkan tamat masa perintah boleh membiarkan sambungan terbuka selama-lamanya, kelihatan sebagai sesi yang berjalan lama dalam anak tetingkap Proses.
5. Kaedah Alternatif: Mendapatkan Data Monitor Aktiviti melalui T-SQL
Walaupun Monitor Aktiviti menyediakan antara muka grafik yang mudah, kadangkala anda perlu mendapatkan maklumat yang setara secara pengaturcaraan atau mencipta penyelesaian pemantauan tersuai.
5.1 Menggunakan Pandangan Pengurusan Dinamik (DMV)
SQL Server mendedahkan maklumat aktiviti melalui pandangan pengurusan dinamik, yang ditanya oleh Monitor Aktiviti di sebalik tabir.
5.1.1 DMV Utama untuk Pemantauan Aktiviti
Most DMV penting untuk mereplikasi fungsi Monitor Aktiviti termasuk:
- sys.dm_exec_requests: Menunjukkan permintaan yang sedang melaksanakan dengan CPU, I/O dan maklumat tunggu.
- sys.dm_exec_sessions: Mengandungi maklumat peringkat sesi seperti nama log masuk, host nama, dan nama program.
- sys.dm_os_wait_stats: Menyediakan statistik menunggu terkumpul untuk keseluruhan contoh.
- sys.dm_exec_query_stats: Mengandungi statistik prestasi agregat untuk pertanyaan cache.
- sys.dm_io_virtual_file_stats: Mengembalikan statistik I/O untuk data dan fail log.
- sys.dm_exec_sql_text: Mendapat semula teks SQL untuk sql_handle atau plan_handle tertentu.
- sys.dm_exec_query_plan: Mengembalikan pelan pelaksanaan untuk pertanyaan cache.
5.1.2 Contoh Pertanyaan untuk Maklumat Proses
Untuk meniru fungsi anak tetingkap Proses, anda boleh bertanya:
SELECT
s.session_id AS [Session ID],
CASE WHEN s.is_user_process = 1 THEN 'Yes' ELSE 'No' END AS [User Process],
s.login_name AS [Login],
ISNULL(CAST(r.blocking_session_id AS VARCHAR), '') AS [Blocked By],
CASE
WHEN r2.session_id IS NOT NULL
AND (r.blocking_session_id = 0 OR r.session_id IS NULL)
THEN '1'
ELSE ''
END AS [Head Blocker],
ISNULL(DB_NAME(r.database_id), '') AS [Database],
ISNULL(t.task_state, '') AS [Task State],
ISNULL(r.command, '') AS [Command],
r.cpu_time AS [CPU Time],
r.total_elapsed_time AS [Elapsed Time],
r.wait_time AS [Wait Time],
r.wait_type AS [Wait Type],
s.memory_usage * 8 AS [Memory Use (KB)],
s.host_name AS [Host Name],
s.program_name AS [Application]
FROM sys.dm_exec_sessions s
LEFT JOIN sys.dm_exec_requests r ON s.session_id = r.session_id
LEFT JOIN sys.dm_exec_requests r2 ON r.session_id = r2.blocking_session_id
LEFT JOIN sys.dm_os_tasks t ON r.session_id = t.session_id
WHERE s.session_id != @@SPID
ORDER BY s.session_id;
5.1.3 Contoh Pertanyaan untuk Statistik Tunggu
Untuk melihat statistik tunggu yang serupa dengan anak tetingkap Resource Waits:
SELECT TOP 10
wait_type AS [Wait Type],
wait_time_ms / 1000.0 AS [Wait Time (sec)],
waiting_tasks_count AS [Waiting Tasks],
wait_time_ms / NULLIF(waiting_tasks_count, 0) AS [Avg Wait Time (ms)]
FROM sys.dm_os_wait_stats
WHERE wait_type NOT LIKE '%SLEEP%'
AND wait_type NOT LIKE '%IDLE%'
AND wait_type NOT LIKE '%QUEUE%'
ORDER BY wait_time_ms DESC;
5.2 Menggunakan sp_WhoIsActive
sp_WhoIsActive ialah prosedur tersimpan ciptaan komuniti yang berkuasa yang menyediakan maklumat yang lebih terperinci daripada Monitor Aktiviti dalam set hasil tunggal.
5.2.1 Memasang sp_WhoIsActive
Untuk memasang sp_WhoIsActive:
- Muat turun versi terkini dari
http://whoisactive.com. - Muat turun ialah skrip SQL yang mengandungi definisi prosedur.
- Buka skrip masuk SQL Server Studio Pengurusan.
- Sambungkan ke anda SQL Server contohnya.
- Jalankan skrip untuk mencipta prosedur dalam pangkalan data induk.
- Berikan kebenaran laksana kepada pengguna yang sesuai.
Oleh kerana sp_WhoIsActive dipasang dalam master, ia boleh diakses dari mana-mana konteks pangkalan data.
5.2.2 Contoh Penggunaan Asas
Cara paling mudah untuk menggunakan sp_WhoIsActive ialah:
EXEC sp_WhoIsActive;
Ini mengembalikan set hasil yang menunjukkan semua sesi aktif dengan pertanyaan mereka, jenis menunggu, menyekat maklumat dan penggunaan sumber.
Untuk sampel 10 saat yang menunjukkan aktiviti sepanjang tempoh itu:
EXEC sp_WhoIsActive @delta_interval = 10;
Ini mengira delta untuk metrik seperti CPU dan bacaan, menunjukkan perkara yang berlaku sepanjang 10 saat tersebut.
5.2.3 Parameter Lanjutan
sp_WhoIsActive menyokong banyak parameter untuk penyesuaian:
- @penapis: Tapis hasil kepada sesi, pangkalan data atau log masuk tertentu.
- @filter_type: Tentukan apa yang digunakan oleh penapis (sesi, pangkalan data, log masuk, dll.).
- @get_plans: Sertakan rancangan pelaksanaan dalam keputusan (ditetapkan kepada 1).
- @get_locks: Tunjukkan maklumat kunci terperinci (ditetapkan kepada 1).
- @get_transaction_info: Paparkan butiran transaksi (ditetapkan kepada 1).
- @sort_order: Hasil pesanan mengikut metrik yang berbeza (CPU, bacaan, tempoh, dsb.).
- @destination_table: Sisipkan hasil ke dalam jadual untuk penjejakan sejarah.
Contoh menunjukkan rancangan disusun mengikut CPU:
EXEC sp_WhoIsActive
@get_plans = 1,
@sort_order = '[CPU] DESC';
5.3 Menggunakan Prosedur Tersimpan Sistem
SQL Server termasuk prosedur tersimpan tradisional untuk memantau aktiviti, walaupun ia menyediakan kurang maklumat daripada DMV atau Monitor Aktiviti.
5.3.1 sp_siapa dan sp_siapa2
Prosedur sp_who menunjukkan maklumat sesi asas:
EXEC sp_who;
Prosedur sp_who2 memberikan butiran lebih sedikit:
EXEC sp_who2;
Kedua-dua prosedur menunjukkan ID sesi, nama log masuk, masa CPU dan maklumat menyekat. Walau bagaimanapun, mereka kekurangan butiran kaya yang tersedia melalui DMV atau Monitor Aktiviti. Mereka most berguna untuk semakan pantas apabila anda memerlukan maklumat minimum dengan cepat.
5.3.2 Prosedur Sistem Berguna Lain
Prosedur sistem tambahan untuk pemantauan termasuk:
- sp_lock: Menunjukkan maklumat kunci (ditamatkan; sebaliknya gunakan sys.dm_tran_locks).
- sp_monitor: Memaparkan statistik tentang SQL Server aktiviti.
- sp_help: Menunjukkan definisi objek dan metadata.
- DBCC SQLPERF: Memaparkan penggunaan ruang log transaksi dan statistik tunggu.
5.4 Mencipta Skrip Pemantauan Tersuai
Untuk persekitaran yang memerlukan pemantauan khusus melebihi apa yang disediakan oleh Monitor Aktiviti, anda boleh membina penyelesaian tersuai menggunakan DMV.
5.4.1 Melengkapkan Skrip Setara Monitor Aktiviti
Berikut ialah skrip komprehensif yang mereplikasi most Fungsi Monitor Aktiviti:
-- Processes Information
SELECT
s.session_id AS [Session ID],
CONVERT(CHAR(1), s.is_user_process) AS [User Process],
s.login_name AS [Login],
ISNULL(CONVERT(VARCHAR, w.blocking_session_id), '') AS [Blocked By],
CASE
WHEN r2.session_id IS NOT NULL
AND (r.blocking_session_id = 0 OR r.session_id IS NULL)
THEN '1'
ELSE ''
END AS [Head Blocker],
ISNULL(DB_NAME(r.database_id), N'') AS [Database],
ISNULL(t.task_state, N'') AS [Task State],
ISNULL(r.command, N'') AS [Command],
SUBSTRING(st.text, (r.statement_start_offset/2) + 1,
((CASE r.statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE r.statement_end_offset
END - r.statement_start_offset) / 2) + 1) AS [Statement],
st.text AS [Command Text],
r.cpu_time AS [CPU Time (ms)],
r.total_elapsed_time / 1000 AS [Elapsed Time (sec)],
r.wait_time AS [Wait Time (ms)],
r.wait_type AS [Wait Type],
r.wait_resource AS [Wait Resource],
s.memory_usage * 8 AS [Memory Use (KB)],
s.host_name AS [Host Name],
c.client_net_address AS [Net Address],
s.program_name AS [Application]
FROM sys.dm_exec_sessions s
LEFT JOIN sys.dm_exec_requests r ON s.session_id = r.session_id
LEFT JOIN sys.dm_exec_requests w ON r.session_id = w.blocking_session_id
LEFT JOIN sys.dm_exec_requests r2 ON r.session_id = r2.blocking_session_id
LEFT JOIN sys.dm_os_tasks t ON r.session_id = t.session_id
AND r.request_id = t.request_id
LEFT JOIN sys.dm_exec_connections c ON s.session_id = c.session_id
OUTER APPLY sys.dm_exec_sql_text(r.sql_handle) st
WHERE s.session_id != @@SPID
ORDER BY s.session_id;
-- Recent Expensive Queries
SELECT TOP 20
qs.execution_count /
DATEDIFF(MINUTE, qs.creation_time, GETDATE()) AS [Executions/min],
qs.total_worker_time / 1000 AS [CPU Time (ms)],
qs.total_physical_reads AS [Physical Reads],
qs.total_logical_writes AS [Logical Writes],
qs.total_logical_reads AS [Logical Reads],
qs.total_elapsed_time / qs.execution_count / 1000 AS [Avg Duration (ms)],
SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,
((CASE qs.statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offset
END - qs.statement_start_offset) / 2) + 1) AS [Query Text]
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
WHERE qs.execution_count > 0
ORDER BY qs.total_worker_time DESC;
5.4.2 Mengautomasikan Pemantauan dengan SQL Agent Jobs
Anda boleh menjadualkan skrip pemantauan tersuai menggunakan SQL Server Ejen:
- Buat jadual untuk menyimpan hasil pemantauan.
- Ubah suai skrip pemantauan anda untuk memasukkan hasil ke dalam jadual ini.
- In SQL Server Studio Pengurusan, kembangkan SQL Server Agent dalam Penjelajah Objek.
- Klik kanan Jawatan Kosong dan pilih Pekerjaan baru.
- Konfigurasikan tugas untuk menjalankan skrip pemantauan anda pada selang masa yang tetap.
- Sediakan makluman atau laporan berdasarkan data yang dikumpul.
Pendekatan ini membolehkan penjejakan sejarah dan analisis aliran yang tidak disediakan oleh Pemantau Aktiviti.
6. Had dan Pertimbangan Monitor Aktiviti
Walaupun Monitor Aktiviti adalah berharga, memahami batasannya membantu anda menggunakannya dengan sewajarnya dan menambahnya dengan alat lain apabila perlu.
6.1 Memahami Overhed Monitor Aktiviti
Monitor Aktiviti tidak percuma—ia menggunakan sumber pelayan untuk mengumpul dan memaparkan maklumat. Memahami overhed ini membantu anda menggunakannya secara bertanggungjawab.
6.1.1 Kesan ke atas Sumber Pelayan
Monitor Aktiviti menjalankan pertanyaan terhadap DMV sistem setiap kali ia dimuat semula. Pertanyaan ini menggunakan CPU, menjana bacaan logik dan boleh memegang kunci secara ringkas pada jadual sistem. Pada pelayan yang sibuk, overhed ini boleh menjejaskan prestasi.
Anak tetingkap Proses dan Pertanyaan Mahal Terkini sangat mahal, kerana ia mesti mengimbas jadual DMV dan cache yang berpotensi besar. Pada pelayan dengan beribu-ribu pelan pertanyaan tembolok, menyegarkan Pertanyaan Mahal Terkini boleh mengambil masa beberapa saat.
Dokumentasi Microsoft memberi amaran bahawa selang muat semula di bawah 10 saat boleh menjejaskan prestasi pelayan dengan ketara, terutamanya pada sistem yang telah dimuatkan.
6.1.2 Amalan Terbaik Selang Segar Segar
Pilih selang muat semula yang sesuai untuk situasi anda:
- 1-5 saat: Hanya untuk penyelesaian masalah segera bagi isu kritikal pada pelayan yang dimuatkan dengan ringan. Jangan biarkan Monitor Aktiviti berjalan pada selang waktu ini.
- 10 saat (lalai): Munasabah untuk most senario penyelesaian masalah dan pemantauan am.
- 30-60 saat: Pilihan yang lebih baik untuk pelayan pengeluaran di bawah beban berat atau apabila memantau untuk tempoh yang panjang.
- Muat semula manual sahaja: Untuk situasi di mana anda ingin menyemak keadaan semasa sekali-sekala tanpa pengundian berterusan.
Sentiasa tutup Monitor Aktiviti apabila anda selesai menyiasat. Jangan biarkan ia berjalan secara berterusan, terutamanya berbilang kejadian daripada pengguna yang berbeza.
6.2 Isu Pengumpulan Jenis Tunggu
Pendekatan Monitor Aktiviti untuk mengkategorikan menunggu, sambil memudahkan pandangan, boleh mengaburkan diagn pentingostmaklumat ic.
6.2.1 Bagaimana Kumpulan Memantau Aktiviti Menunggu
SQL Server menjejaki ratusan jenis menunggu yang berbeza, setiap satu menunjukkan sumber atau keadaan tertentu. Activity Monitor mengumpulkannya ke dalam kategori yang luas seperti "Buffer Latch," "Lock" dan "Memory."
Sebagai contoh, kategori "Buffer Latch" termasuk PAGELATCH_SH, PAGELATCH_UP, PAGELATCH_EX dan beberapa jenis menunggu khusus lain. Walaupun semuanya berkaitan dengan akses halaman, mereka mempunyai sebab dan penyelesaian yang berbeza.
Microsoft tidak mendokumenkan dengan tepat jenis menunggu yang dipetakan ke kategori mana, menjadikannya sukar untuk memahami perkara yang anda lihat sebenarnya.
6.2.2 Jenis Tunggu Hilang
Monitor Aktiviti tidak menunjukkan semua jenis menunggu. Most terutamanya, ia sering meninggalkan CXPACKET menunggu, yang menunjukkan pelaksanaan pertanyaan selari. Penantian CXPACKET adalah perkara biasa dan biasanya tidak bermasalah, tetapi mengetahui ia hadir membantu anda memahami ciri beban kerja.
Apabila Activity Monitor menunjukkan "Buffer Latch" sebagai penantian teratas anda tetapi alat lain menunjukkan CXPACKET mendominasi, percanggahan itu datang daripada logik penapisan dan pengumpulan Monitor Aktiviti.
6.2.3 Mengapa Jenis Tunggu Tertentu Penting
Mengetahui jenis tunggu khusus penting untuk menyelesaikan masalah:
- PAGELATCH_EX: Selalunya menunjukkan perbalahan tempdb pada halaman peruntukan. Penyelesaian melibatkan penambahan lebih banyak fail data tempdb.
- PAGELATCH_SH: Mungkin menunjukkan halaman panas dalam jadual pengguna. Penyelesaian melibatkan pembahagian atau penyusunan semula indeks.
- PAGELATCH_UP: Biasa semasa kemas kini. Mungkin menunjukkan operasi biasa dan bukannya masalah.
Pantau Aktiviti mengumpulkan semua ini di bawah "Buffer Latch", menjadikan diagnosis lebih sukar. Alat seperti sp_WhoIsActive dan pertanyaan DMV menunjukkan jenis tunggu tertentu.
6.3 Ketepatan dan Ketepatan Masa Data
Monitor Aktiviti menyediakan paparan hampir masa nyata, tetapi "dekat" ialah perkataan operasi. Memahami kaedah pengumpulan datanya membantu anda mentafsir keputusan dengan betul.
6.3.1 Syot Kilat vs Pemantauan Berterusan
Monitor Aktiviti menunjukkan syot kilat titik dalam masa yang diambil pada setiap selang penyegaran. Peristiwa yang berlaku antara syot kilat tidak ditangkap. Jika pertanyaan berjalan selama 2 saat dan anda memuat semula setiap 10 saat, anda mungkin melihatnya sekali atau tidak sama sekali, bergantung pada masa.
Ini bermakna Monitor Aktiviti cemerlang dalam mencari masalah yang berterusan (menyekat minit yang berpanjangan, CPU yang tinggi secara konsisten) tetapi mungkin terlepas isu sementara (kebuntuan ringkas, lonjakan pertanyaan sekali-sekala).
6.3.2 Pengagregatan dan Persampelan
Anak tetingkap Pertanyaan Mahal Terkini menunjukkan data yang diagregatkan sejak rancangan pertanyaan memasuki cache. Dua pertanyaan yang sama dengan nilai parameter berbeza muncul sebagai satu baris jika mereka berkongsi rancangan. Pengagregatan ini boleh menutup masalah dengan kombinasi parameter tertentu (isu menghidu parameter).
Anak tetingkap Resource Waits mengira kadar dengan membandingkan syot kilat. Jika statistik tunggu ditetapkan semula antara syot kilat (rare tetapi mungkin), kadar yang dikira mungkin tidak betul.
6.4 Bila TIDAK Menggunakan Monitor Aktiviti
Monitor Aktiviti tidak sesuai untuk setiap senario pemantauan. Kenali apabila alat alternatif adalah pilihan yang lebih baik.
6.4.1 Keperluan Analisis Sejarah
Monitor Aktiviti hanya menunjukkan aktiviti semasa atau terkini. Ia tidak menyimpan data sejarah. Jika anda perlu menganalisis arah aliran sepanjang hari atau minggu, bandingkan prestasi semasa dengan garis dasar atau menjana laporan tentang corak prestasi, Monitor Aktiviti tidak mencukupi.
Untuk analisis sejarah, gunakan SQL ServerPapan Pemuka Prestasi terbina dalam, Acara Lanjutan dengan fail tarmendapat, atau penyelesaian pemantauan pihak ketiga.
6.4.2 Keperluan Statistik Tunggu Terperinci
Apabila anda memerlukan maklumat jenis tunggu yang tepat untuk penalaan lanjutan, pengumpulan dan penapisan Monitor Aktiviti menjadikannya tidak mencukupi. Gunakan pertanyaan DMV secara langsung atau sebaliknya sp_WhoIsActive.
Untuk analisis statistik tunggu yang komprehensif, tanya sys.dm_os_wait_stats terus dan tapis penantian yang tidak berbahaya secara manual.
6.4.3 Pertimbangan Pelayan Pengeluaran
Pada pelayan pengeluaran di bawah beban berat, overhed Monitor Aktiviti boleh menjadi masalah. Pentadbir pangkalan data berbilang tidak sepatutnya menjalankan Monitor Aktiviti serentak pada pelayan yang sama.
Untuk pemantauan pengeluaran, pertimbangkan alternatif ringan seperti syot kilat DMV berjadual yang disimpan dalam pangkalan data pemantauan atau gunakan penghalaan Baca Sahaja untuk memantau replika kedua dalam konfigurasi Sentiasa Hidup.
7. Amalan Terbaik untuk Menggunakan Monitor Aktiviti
Mengikuti amalan terbaik memastikan anda mendapat nilai maksimum daripada Activity Monitor sambil meminimumkan kesan negatif pada pelayan anda.
7.1 Bila Menggunakan Monitor Aktiviti
Monitor Aktiviti bersinar dalam senario tertentu. Gunakannya apabila kekuatannya sejajar dengan keperluan anda.
7.1.1 Isu Prestasi Masa Nyata
Monitor Aktiviti sesuai apabila pengguna sedang mengalami masalah dan anda perlu mendiagnosis isu tersebut dengan segera. Paparan masa nyata membantu anda melihat perkara yang berlaku sekarang.
Apabila anda menerima panggilan bahawa "aplikasi lambat," membuka Monitor Aktiviti sepatutnya menjadi salah satu langkah pertama anda. Anda boleh menentukan dengan cepat sama ada pangkalan data sibuk, disekat atau melahu.
7.1.2 Siasatan Kelembapan Permohonan
Apabila aplikasi tertentu menjadi tidak bertindak balas, Monitor Aktiviti membantu anda menentukan sama ada isu pangkalan data adalah puncanya. Tapis anak tetingkap Proses mengikut nama aplikasi untuk melihat hanya aktiviti pangkalan data aplikasi itu.
Jika aplikasi tidak menunjukkan aktiviti pangkalan data semasa pengguna melaporkan masalah, isunya terletak di tempat lain dalam timbunan. Jika anda melihat penyekatan yang meluas atau pertanyaan mahal, anda telah menemui punca anda.
7.1.3 Pemeriksaan Kesihatan Pantas
Monitor Aktiviti menyediakan papan pemuka yang sangat baik untuk pemeriksaan kesihatan pantas semasa pentadbiran rutin. Bukanya, lihat graf Gambaran Keseluruhan dan sahkan tiada apa yang kelihatan tidak normal.
Semakan sepintas lalu ini mengambil masa beberapa saat dan boleh mendedahkan masalah sebelum menjadi kritikal. Jadikan ia sebagai rutin harian anda.
7.2 Tetapan Konfigurasi Optimum
Mengkonfigurasi Monitor Aktiviti dengan sewajarnya menambah baik kegunaannya dan jejak sumbernya.
7.2.1 Selang Segar Semula Disyorkan
Padankan selang muat semula anda dengan tujuan anda:
- Penyelesaian masalah aktif: 10 saat memberikan responsif yang baik dengan overhed yang munasabah.
- Pemantauan lanjutan: 30-60 saat mengurangkan impak pelayan semasa tempoh pemerhatian yang lebih lama.
- Diagnosis isu kritikal: 5 saat memberikan butiran yang tinggi apabila setiap saat dikira, tetapi gunakan secara ringkas.
- Pemeriksaan kesihatan berkala: Muat semula manual (selang 1 jam) apabila anda tidak menonton secara aktif.
Ingat untuk menutup Monitor Aktiviti apabila selesai. Menetapkannya kepada selang yang panjang dan melupakannya membazir sumber pelayan.
7.2.2 Strategi Penapisan
Gunakan penapis untuk menumpukan pada maklumat yang berkaitan dan mengurangkan beban kognitif:
- Proses Penapis mengikut Pangkalan Data untuk melihat hanya aktiviti terhadap pangkalan data tertentu.
- Tapis mengikut Log Masuk untuk menjejaki aktiviti pengguna tertentu.
- Tapis mengikut Keadaan Tugas = RUNNING untuk menyembunyikan sesi terbiar.
- Tapis mengikut Permohonan untuk mengasingkan trafik daripada program tertentu.
- Tunjukkan NonBlanks sahaja masuk Disekat Oleh untuk melihat situasi menyekat sahaja.
7.2.3 Pemilihan Lajur dan Isih
Membangunkan pendekatan sistematik untuk menyemak data Monitor Aktiviti:
- Start dengan Gambaran Keseluruhan: Semak graf untuk mengesan lonjakan atau anomali yang jelas.
- Semak Proses untuk menyekat: Isih mengikut ID Sesi, kemudian cari nilai Disekat Oleh.
- Semakan Sumber Menunggu: Isih mengikut Masa Tunggu Terkumpul untuk mengenal pasti kesesakan sumber.
- Analisis Pertanyaan Mahal: Isih mengikut metrik yang berbeza (CPU, pelaksanaan, bacaan) untuk mencari jenis masalah yang berbeza.
- Sahkan dengan Anak Tetingkap I/O: Sahkan sama ada pertanyaan intensif I/O berkait dengan aktiviti cakera yang tinggi.
7.3 Integrasi dengan Alat Lain
Monitor Aktiviti berfungsi paling baik sebagai sebahagian daripada kit alat yang lebih luas dan bukannya sebagai penyelesaian kendiri.
7.3.1 Menggunakan dengan SQL Server Profil
Pemantau Aktiviti dan SQL Server Profiler saling melengkapi antara satu sama lain. Apabila anda mengenal pasti sesi bermasalah dalam Monitor Aktiviti, klik kanan dan pilih Proses Jejak masuk SQL Server Profil.
Ini melancarkan Profiler dengan penapis yang telah dikonfigurasikan untuk menangkap aktiviti sesi itu sahaja. Anda melihat urutan lengkap pernyataan yang dilaksanakan, maklumat masa dan mesej ralat—perincian yang tidak diberikan oleh Monitor Aktiviti.
Untuk mengetahui lebih lanjut mengenai SQL Server Keupayaan pemprofil dan teknik pengesanan lanjutan, lihat kami menyeluruh SQL Server Panduan profiler.
7.3.2 Melengkapkan dengan Acara Lanjutan
Acara Lanjutan menawarkan overhed rendah, pemantauan terperinci yang menangkap maklumat yang dilepaskan oleh Monitor Aktiviti. Cipta sesi Acara Lanjutan untuk menjejaki acara tertentu seperti kebuntuan, pertanyaan jangka panjang atau penyusunan semula yang berlebihan.
Gunakan Monitor Aktiviti untuk siasatan segera dan Peristiwa Lanjutan untuk pemantauan berterusan dan analisis sejarah. Kedua-dua alat menangani keperluan yang berbeza.
Untuk mengetahui lebih lanjut mengenai SQL Server Keupayaan Acara Lanjutan dan teknik pemantauan lanjutan, lihat kami menyeluruh SQL Server Panduan Acara Lanjutan.
7.3.3 Penyelesaian Pemantauan Pihak Ketiga
Alat komersil seperti SolarWinds Database Performance Analyzer, Redgate SQL Monitor dan Quest Spotlight menyediakan ciri yang tiada pada Monitor Aktiviti: makluman, aliran sejarah, perancangan kapasiti dan diagn automatikostics.
Alat ini adalah tambahan yang berharga kepada Monitor Aktiviti, bukan pengganti. Monitor Aktiviti kekal berguna untuk pemeriksaan dan penyiasatan pantas walaupun alat pemantauan canggih tersedia.
7.4 Kesilapan Biasa yang Perlu Dielakkan
Memahami kesilapan Monitor Aktiviti biasa membantu anda menggunakannya dengan lebih berkesan.
7.4.1 Membiarkan Monitor Aktiviti Berjalan Berterusan
Most kesilapan biasa ialah membuka Monitor Aktiviti dan membiarkannya berjalan selama-lamanya. Ini membazir sumber pelayan dan memberikan sedikit nilai kerana anda tidak menonton secara aktif.
Tutup Monitor Aktiviti apabila anda tidak menggunakannya secara aktif. Jika anda memerlukan pemantauan berterusan, laksanakan penyelesaian pemantauan yang betul dengan pengumpulan data berjadual sebaliknya.
7.4.2 Terlalu Bergantung Pada Monitor Aktiviti Sendiri
Monitor Aktiviti menyediakan satu perspektif tentang kesihatan pelayan. Jangan bergantung padanya secara eksklusif. Tambahan dengan Windows Performance Monitor untuk metrik peringkat OS, Peristiwa Lanjutan untuk penjejakan terperinci dan analisis pelan pelaksanaan untuk penalaan pertanyaan.
Monitor Aktiviti membantu anda mengenal pasti masalah, tetapi menyelesaikannya selalunya memerlukan alat tambahan dan analisis yang lebih mendalam.
Ketahui lebih lanjut mengenai SQL Server pemantau prestasi dalam kami melengkapkan panduan.
7.4.3 Mengabaikan Trend Sejarah
Monitor Aktiviti menunjukkan keadaan semasa, tetapi masalah prestasi selalunya mempunyai corak yang kelihatan hanya dari semasa ke semasa. Laksanakan pengumpulan data sejarah supaya anda boleh membandingkan metrik semasa dengan garis dasar dan mengenal pasti arah aliran.
Tanpa konteks sejarah, anda mungkin tidak menyedari bahawa penggunaan CPU "biasa" hari ini adalah 30% lebih tinggi daripada garis dasar bulan lepas, menunjukkan kemerosotan secara beransur-ansur.
8. Menyelesaikan Masalah Monitor Aktiviti
Activity Monitor sendiri kadangkala mengalami masalah. Mengetahui cara menyelesaikan masalah ini menghalang kekecewaan.
8.1 Monitor Aktiviti Tidak Akan Dibuka atau Tidak Memaparkan Data
Apabila Monitor Aktiviti dibuka tetapi menunjukkan anak tetingkap kosong atau tidak akan dibuka sama sekali, beberapa faktor mungkin bertanggungjawab.
8.1.1 Isu Kebenaran
Most punca biasa masalah Monitor Aktiviti ialah kebenaran yang tidak mencukupi. Untuk mengesahkan dan menyelesaikan:
- Semak kebenaran peringkat pelayan anda:
SELECT * FROM fn_my_permissions(NULL, 'SERVER') WHERE permission_name = 'VIEW SERVER STATE'; - Jika tiada baris kembali, anda tidak mempunyai kebenaran VIEW SERVER STATE.
- Minta pentadbir pelayan untuk memberikannya:
USE master; GRANT VIEW SERVER STATE TO [YourLogin]; - Tutup dan buka semula Monitor Aktiviti selepas kebenaran diberikan.
8.1.2 Isu Keserasian Versi
Menggunakan versi lama SQL Server Studio Pengurusan untuk menyambung kepada yang lebih baharu SQL Server versi boleh menyebabkan kegagalan Monitor Aktiviti. Alat ini mungkin tidak memahami jenis tunggu baharu atau lajur paparan sistem.
Sentiasa gunakan versi SSMS yang sepadan atau lebih baharu daripada versi anda SQL Server versi. Microsoft menyediakan SSMS terkini sebagai muat turun percuma yang berasingan daripada SQL Server sendiri.
8.1.3 Tembok Api dan Isu Rangkaian
Monitor Aktiviti memerlukan sambungan ke SQL Server contoh pada port standard (1433 secara lalai). Jika anda boleh menyambung melalui Object Explorer tetapi Monitor Aktiviti gagal, peraturan firewall mungkin menyekat sambungan tertentu.
Sahkan bahawa pelanggan anda boleh mencapai SQL Server mesin pada semua port yang diperlukan. Semak kedua-dua Windows Firewall dan mana-mana tembok api rangkaian antara klien anda dan pelayan.
8.2 Pemantauan Aktiviti Dijeda Kekal
Isu biasa, terutamanya dalam SQL Server 2019, ialah Pemantauan Aktiviti dibuka dalam keadaan dijeda dan enggan menyambung semula.
8.2.1 Memahami Keadaan Jeda
Apabila Monitor Aktiviti dijeda, semua anak tetingkap menunjukkan status "Dijeda" dengan butang resume yang mungkin tidak berfungsi. Ini menghalang anda daripada melihat sebarang aktiviti pelayan.
Keadaan dijeda biasanya berlaku disebabkan oleh isu kebenaran, sekatan sambungan jauh atau pepijat versi SSMS dan bukannya tindakan jeda yang disengajakan.
8.2.2 Punca Biasa
Pemantau Aktiviti boleh memasuki keadaan dijeda kekal disebabkan oleh:
- Tiada kebenaran VIEW SERVER STATE pada anak tetingkap baharu yang ditambahkan baru-baru ini SQL Server versi
- Sambungan jauh dilumpuhkan pada SQL Server contohnya
- Kegagalan pengesahan untuk pertanyaan sistem tertentu
- Pepijat dalam binaan SSMS tertentu, terutamanya 18.0 hingga 18.3
- Isu ketersambungan antara klien dan pelayan
8.2.3 Langkah Penyelesaian
Untuk menyelesaikan isu keadaan Monitor Aktiviti dijeda:
- Kemas kini SSMS: Muat turun dan pasang yang terkini SQL Server Versi Studio Pengurusan daripada tapak web Microsoft. Banyak pepijat keadaan yang dijeda telah diperbaiki dalam keluaran kemudian.
- Sahkan kebenaran: Pastikan anda mempunyai keizinan LIHAT NEGERI SERVER dan LIHAT MANA-MANA DEFINISI.
- Semak sambungan jauh: Sahkan bahawa SQL Server contoh membenarkan sambungan jauh:
EXEC sp_configure 'remote access';Jika nilainya ialah 0, minta pentadbir untuk mendayakannya.
- Restart SSMS: Kadang-kadang hanya menutup semua tetingkap dan restarting SQL Server Studio Pengurusan menyelesaikan isu ini.
- Sambung dengan Pengesahan Windows: Jika menggunakan pengesahan SQL, cuba pengesahan Windows sebaliknya, kerana ia kadangkala memintas isu jeda berkaitan pengesahan.
8.3 Isu Prestasi Apabila Menggunakan Monitor Aktiviti
Jika Monitor Aktiviti itu sendiri menjadi perlahan atau menyebabkan kemerosotan prestasi pelayan, pelarasan diperlukan.
8.3.1 Mengurangkan Overhed Pemantauan
Untuk meminimumkan kesan Monitor Aktiviti:
- Tingkatkan selang penyegaran kepada 30 saat atau 1 minit.
- Tutup anak tetingkap yang anda tidak gunakan secara aktif dengan mengklik butang runtuh.
- Apabila anak tetingkap runtuh, Monitor Aktiviti tidak menanyakan data untuknya.
- Elakkan menjalankan berbilang kejadian Monitor Aktiviti secara serentak.
- Tutup Pantau Aktiviti sepenuhnya apabila tidak menyiasat isu secara aktif.
8.3.2 Kaedah Pemantauan Ringan Alternatif
Jika Monitor Aktiviti terlalu intensif sumber untuk persekitaran anda, pertimbangkan alternatif:
- Tanya DMV secara langsung: Tulis pertanyaan T-SQL khusus yang hanya mendapatkan maklumat yang anda perlukan.
- Gunakan sp_WhoIsActive: Prosedur tersimpan ini sangat dioptimumkan dan biasanya mempunyai overhed yang lebih rendah daripada Monitor Aktiviti.
- Laksanakan persampelan: Jadualkan kerja Ejen SQL yang menangkap gambar data DMV pada selang masa yang tetap, menyimpan hasil dalam jadual untuk analisis kemudian.
- Pantau replika sekunder: In Kumpulan ketersediaan Sentiasa Aktif, jalankan Activity Monitor terhadap sekunder yang boleh dibaca dan bukannya primer.
8.4 Maklumat Tidak Tepat atau Hilang
Kadangkala Monitor Aktiviti memaparkan maklumat yang kelihatan tidak betul atau tidak lengkap.
8.4.1 Mengesahkan Data dengan DMV
Apabila hasil Pemantauan Aktiviti kelihatan mencurigakan, sahkan keputusan tersebut dengan menanyakan DMV asas secara langsung. Contohnya, jika anak tetingkap Proses tidak menunjukkan sekatan tetapi pengguna melaporkannya, tanya:
SELECT
blocking_session_id,
session_id,
wait_type,
wait_time,
wait_resource
FROM sys.dm_exec_requests
WHERE blocking_session_id != 0;
Jika pertanyaan ini menunjukkan menyekat bahawa Monitor Aktiviti terlepas, anda telah mengesahkan isu paparan.
8.4.2 Memahami Masa Segar Semula Data
Ingat bahawa Monitor Aktiviti menunjukkan syot kilat. Pertanyaan yang dijalankan antara selang muat semula tidak akan muncul dalam Pertanyaan Mahal Terkini melainkan pelan pelaksanaannya kekal dalam cache.
Begitu juga, statistik tunggu dalam anak tetingkap Resource Waits mencerminkan pengumpulan sejak syot kilat terakhir. Perubahan beban kerja yang cepat mungkin menunjukkan corak berbeza setiap muat semula.
9. Teknik Pemantauan Aktiviti Lanjutan
Pentadbir pangkalan data yang berpengalaman menggunakan Monitor Aktiviti dengan cara yang canggih untuk mengekstrak diagn maksimumostnilai ic.
9.1 Menggabungkan Berbilang Anak Tetingkap untuk Analisis Punca Punca
Kuasa sebenar Monitor Aktiviti muncul apabila anda mengaitkan maklumat merentas berbilang anak tetingkap untuk memahami isu prestasi yang kompleks.
9.1.1 Menghubungkaitkan Penantian dengan Proses
Apabila anak tetingkap Resource Waits menunjukkan masa menunggu yang tinggi dalam kategori, gunakan anak tetingkap Proses untuk mengenal pasti sesi yang mengalami penantian tersebut:
- Perhatikan kategori tunggu dengan masa menunggu terkumpul yang tinggi (cth, “Kunci”).
- Beralih ke anak tetingkap Proses.
- Disusun mengikut Jenis Tunggu kepada kumpulan sesi mengikut penantian semasa mereka.
- Cari sesi yang menunjukkan jenis menunggu dalam kategori bermasalah.
- Untuk sesi tersebut, periksa Tunggu Sumber lajur untuk melihat objek pangkalan data yang terlibat.
- Klik kanan dan pilih Butiran untuk melihat teks pertanyaan.
Kaitan ini membantu anda beralih daripada "kami menunggu kunci" kepada "pertanyaan khusus ini sedang menunggu kunci pada jadual ini."
9.1.2 Menghubungkan Pertanyaan Mahal kepada Isu I/O
Apabila anak tetingkap I/O Fail Data menunjukkan aktiviti cakera tinggi pada pangkalan data tertentu:
- Perhatikan fail pangkalan data yang mempunyai kadar baca atau tulis MB/saat yang tinggi.
- Tukar kepada Pertanyaan Mahal Terkini.
- Disusun mengikut Bacaan Fizikal/saat untuk mengenal pasti pertanyaan yang banyak membaca daripada cakera.
- Tapis atau kenal pasti secara visual pertanyaan yang dijalankan terhadap pangkalan data dengan I/O tinggi.
- Periksa rancangan pelaksanaan pertanyaan tersebut untuk imbasan jadual atau indeks hilang yang menyebabkan I/O berlebihan.
Analisis berbilang anak tetingkap ini menghubungkan simptom (I/O cakera tinggi) dengan punca (pertanyaan tidak cekap khusus).
9.2 Menggunakan Monitor Aktiviti untuk Perancangan Kapasiti
Walaupun Monitor Aktiviti tidak menyimpan data sejarah, anda boleh menggunakannya secara strategik untuk pemerhatian perancangan kapasiti.
9.2.1 Mengenalpasti Corak Penggunaan Puncak
Pantau aktiviti pelayan pada masa yang berbeza dalam sehari untuk mengenal pasti corak penggunaan:
- Buka Monitor Aktiviti semasa waktu perniagaan puncak yang diketahui.
- Perhatikan % nilai puncak graf Masa Pemproses.
- Catatkan kiraan Tugas Menunggu maksimum.
- Patuhi Permintaan Kelompok/saat pada waktu puncak.
- Dokumentasikan pangkalan data tersibuk dalam anak tetingkap Proses.
- Ulang pada waktu luar puncak untuk perbandingan.
Jika masa pemproses jam puncak secara konsisten melebihi 80%, anda menghampiri had kapasiti CPU. Begitu juga, kiraan menunggu yang semakin meningkat menunjukkan perselisihan sumber yang semakin meningkat.
9.2.2 Analisis Trend Sumber
Walaupun Monitor Aktiviti menunjukkan keadaan semasa, anda boleh menggunakannya untuk sohor kini semakan dengan merekodkan metrik utama dari semasa ke semasa:
- Ambil tangkapan skrin anak tetingkap Gambaran Keseluruhan pada masa yang sama setiap hari
- Catatkan nilai puncak daripada setiap graf
- Bandingkan minggu ke minggu untuk mengenal pasti trend pertumbuhan
- Perhatikan peningkatan beransur-ansur dalam purata masa pemproses atau kadar I/O
Arah aliran manual ini menambah penyelesaian pemantauan yang lebih canggih dan membantu mewajarkan pengembangan kapasiti.
9.3 Mendokumentasikan Garis Dasar Prestasi
Mewujudkan metrik prestasi garis dasar membantu anda mengenali apabila prestasi merosot.
9.3.1 Menangkap Metrik Garis Dasar
Semasa tempoh prestasi baik yang diketahui, dokumenkan metrik Monitor Aktiviti:
- Buka Monitor Aktiviti semasa operasi perniagaan biasa (bukan puncak atau luar puncak).
- Nilai anak tetingkap Gambaran Keseluruhan rekod:
- Julat Masa Pemproses % Biasa
- Kiraan Purata Tugas Menunggu
- Kadar I/O Pangkalan Data biasa
- Permintaan Kelompok Biasa/saat
- Nota Resource Waits kategori anak tetingkap yang menunjukkan most menunggu masa.
- Dokumenkan bilangan proses aktif biasanya dalam anak tetingkap Proses.
- Rekod metrik pelaksanaan pertanyaan wakil daripada Pertanyaan Mahal Terkini.
Simpan dokumentasi garis dasar ini untuk rujukan masa hadapan apabila menyiasat masalah prestasi.
9.3.2 Membandingkan Prestasi Semasa vs Garis Dasar
Apabila isu prestasi timbul, bandingkan bacaan Monitor Aktiviti semasa dengan garis dasar anda yang didokumenkan:
- Adakah masa pemproses jauh lebih tinggi daripada garis dasar? Fokus pada pertanyaan intensif CPU.
- Adakah tugas menunggu 2-3x tahap asas? Siasat menunggu sumber.
- Adakah I/O jauh lebih tinggi? Semak anak tetingkap I/O Fail Data dan pertanyaan mahal.
- Adakah permintaan kelompok lebih rendah daripada garis dasar pada waktu puncak? Cari masalah penyekatan atau ketersambungan.
Perbandingan ini membantu anda mengenal pasti perkara yang berubah dan memfokuskan usaha penyelesaian masalah dengan sewajarnya.
9.4 Mencipta Aliran Kerja Pemantauan Tersuai
Membangunkan aliran kerja yang sistematik untuk senario penyiasatan biasa bagi memastikan analisis yang teliti dan berulang.
9.4.1 Proses Penyiasatan Langkah demi Langkah
Apabila pengguna melaporkan isu prestasi, ikut aliran kerja yang konsisten:
- Pemeriksaan kesihatan cepat: Buka Monitor Aktiviti dan imbas graf anak tetingkap Gambaran Keseluruhan untuk mencari anomali yang jelas.
- Semak untuk menyekat: Kembangkan anak tetingkap Proses, tapis untuk Bukan Kosong dalam lajur Disekat Oleh.
- Kenal pasti perbalahan sumber: Anak tetingkap Tunggu Sumber Semakan diisih mengikut masa menunggu.
- Cari pertanyaan mahal: Periksa Pertanyaan Mahal Terkini yang diisih mengikut CPU, kemudian pelaksanaan, kemudian dibaca.
- Hubungkaitkan corak I/O: Rujukan silang pertanyaan mahal dengan aktiviti anak tetingkap I/O Fail Data.
- Penemuan dokumen: Ambil tangkapan skrin dan rekod ID sesi yang berkaitan, jenis menunggu dan butiran pertanyaan.
- Menyelam dalam: Gunakan jejak Profiler, analisis pelan pelaksanaan dan pertanyaan DMV untuk penyiasatan terperinci tentang isu yang dikenal pasti.
9.4.2 Kriteria Peningkatan
Tetapkan kriteria untuk masa untuk meningkatkan isu berbanding penyiasatan berterusan:
- Tingkatkan segera: Menyekat rantaian yang berlangsung >5 minit, masa pemproses pada 100% selama >2 minit, proses sistem kritikal menunjukkan keadaan DIGANTUNG.
- Tingkatkan dengan analisis: Pertanyaan mahal berulang yang memakan >50% CPU, masa tindak balas I/O tinggi yang konsisten >50ms, pemberian memori gagal berulang kali.
- Siasat lebih lanjut: Masarary menunggu penyelesaian dalam beberapa minit, pertanyaan dengan rancangan suboptimum tetapi prestasi yang boleh diterima, sekatan kecil <30 saat tempoh.
10. Monitor Aktiviti dalam Berbeza SQL Server versi
Monitor Aktiviti telah berkembang merentasi SQL Server versi, dengan setiap keluaran membawa peningkatan dan kadangkala isu baharu.
10.1 Pemantauan Aktiviti dalam SQL Server 2008 dan Kemudian
SQL Server 2008 memperkenalkan reka bentuk Monitor Aktiviti moden yang sebahagian besarnya kekal tidak berubah hari ini.
10.1.1 Ciri Baharu Diperkenalkan dalam SQL Server 2008
. SQL Server Reka bentuk semula Monitor Aktiviti 2008 membawa peningkatan yang ketara:
- Papan pemuka grafik dengan carta masa nyata dalam anak tetingkap Gambaran Keseluruhan
- Antara muka anak tetingkap boleh dikembangkan/boleh dilipat menggantikan paparan grid lama sahaja
- Anak tetingkap Pertanyaan Mahal Baru-baru ini menunjukkan data prestasi pertanyaan agregat
- Anak tetingkap I/O Fail Data untuk pemantauan aktiviti cakera setiap fail
- Anak tetingkap Tunggu Sumber Dipertingkat dengan pengkategorian tunggu
- Klik kanan menu konteks untuk tindakan proses seperti membunuh sesi dan melancarkan Profiler
- Selang muat semula boleh dikonfigurasikan dari 1 saat hingga 1 jam
Perubahan ini mengubah Monitor Aktiviti daripada senarai proses yang mudah kepada papan pemuka pemantauan yang komprehensif.
10.1.2 Perubahan daripada SQL Server 2005
SQL Server Monitor Aktiviti 2005 adalah jauh lebih terhad:
- Diakses melalui folder Pengurusan dalam Object Explorer dan bukannya bar alat
- Grid tunggal menunjukkan senarai proses dengan maklumat asas
- Tiada carta grafik atau berbilang anak tetingkap
- Tiada pertanyaan mahal atau pemantauan I/O
- Maklumat statistik menunggu terhad
Reka bentuk semula 2008 mewakili pengimbasan semula yang lengkap dan bukannya peningkatan tambahan.
10.2 Pemantauan Aktiviti dalam SQL Server 2014/2016
SQL Server 2014 dan 2016 membuat peningkatan tambahan pada pengumpulan data asas Monitor Aktiviti tetapi sedikit perubahan visual.
10.2.1 Penambahbaikan dan Penambahbaikan
Pembaikan utama dalam versi ini termasuk:
- Prestasi yang lebih baik apabila memantau pelayan dengan beribu-ribu pelan cache
- Keupayaan penapisan dipertingkatkan dalam anak tetingkap Proses
- Ketepatan pengagregatan statistik menunggu dipertingkat
- Pengendalian pengisihan dan penapisan lajur yang lebih baik dengan set hasil yang besar
- Pertanyaan DMV yang lebih cekap mengurangkan overhed pemantauan
Antara muka teras kekal konsisten dengan SQL Server 2008, mengekalkan kebiasaan untuk pentadbir.
10.3 Pemantauan Aktiviti dalam SQL Server 2019/2022
baru-baru ini SQL Server versi meneruskan evolusi Monitor Aktiviti dengan fokus pada prestasi dan kestabilan.
10.3.1 Ciri dan Keupayaan Terkini
SQL Server Pemantau Aktiviti 2019 dan 2022 termasuk:
- Sokongan untuk jenis menunggu baharu yang diperkenalkan dalam versi ini
- Prestasi pemaparan yang lebih baik dalam SSMS menggunakan teknologi WPF
- Pengendalian yang lebih baik bagi sejumlah besar sesi aktif
- Keserasian dipertingkat dengan platform SQL awan
- Metrik CPU dan I/O yang lebih tepat
10.3.2 Isu Diketahui dalam Versi Terkini
SQL Server 2019 memperkenalkan beberapa pepijat Monitor Aktiviti:
- Keadaan Jeda Kekal: Monitor Aktiviti kerap memasuki keadaan dijeda dan tidak akan disambung semula, terutamanya dalam SSMS 18.0-18.3. Dibetulkan dalam versi SSMS kemudian.
- Kegagalan Sambungan Jauh: Sesetengah konfigurasi menghalang Monitor Aktiviti daripada dibuka pada kejadian jauh. Penyelesaian termasuk mendayakan bendera surih tertentu atau menggunakan binaan SSMS yang lebih baharu.
- Isu Kebenaran: Paparan sistem baharu memerlukan kebenaran tambahan yang tidak didokumenkan dengan jelas, menyebabkan paparan kosong walaupun dengan LIHAT STATE SERVER.
Sentiasa gunakan versi SSMS terkini apabila bekerja dengannya SQL Server 2019 dan 2022 untuk mengelakkan isu ini.
11. Kes Penggunaan Praktikal dan Contoh
Contoh dunia sebenar menunjukkan cara menggunakan Monitor Aktiviti dengan berkesan dalam senario penyelesaian masalah biasa.
11.1 Kajian Kes: Mendiagnosis Aplikasi Web Lambat
Pasukan pembangunan melaporkan bahawa aplikasi web mereka menjadi sangat perlahan, dengan pemuatan halaman mengambil masa 20-30 saat dan bukannya 2-3 saat biasa.
11.1.1 Penyiasatan Awal dengan Anak Tetingkap Gambaran Keseluruhan
Buka Monitor Aktiviti dan periksa anak tetingkap Gambaran Keseluruhan:
- Graf % Masa Pemproses menunjukkan 85-95% penggunaan CPU, jauh lebih tinggi daripada garis dasar 30-40% biasa.
- Tugasan Menunggu turun naik antara 10-20 tugasan, berbanding garis dasar biasa 0-3.
- I/O pangkalan data menunjukkan aktiviti sederhana sekitar 50 MB/s.
- Permintaan Kelompok/saat adalah lebih rendah daripada jangkaan pada 100/saat, berbanding 300-400/saat biasa semasa waktu perniagaan.
Corak ini mencadangkan kesesakan CPU dengan pertikaian sumber yang menyebabkan daya pemprosesan berkurangan. Pelayan bekerja keras tetapi tidak memproses banyak permintaan.
11.1.2 Mengenalpasti Pertanyaan Bermasalah
Kembangkan anak tetingkap Pertanyaan Mahal Terkini dan susun mengikut Pelaksanaan/min:
- Pertanyaan teratas menunjukkan 15,000 pelaksanaan seminit.
- Klik kanan dan pilih Edit Teks Pertanyaan untuk meneliti pertanyaan.
- Pertanyaan ialah pernyataan SELECT mudah yang mengambil rekod pengguna tunggal:
SELECT * FROM Users WHERE UserId = @UserId. - Pertanyaan ini tidak boleh dilaksanakan 15,000 kali seminit untuk penggunaan aplikasi biasa.
Klik kanan pertanyaan dan pilih Tunjukkan Pelan Pelaksanaan. Pelan menunjukkan imbasan jadual pada jadual Pengguna dengan amaran tentang indeks yang hilang pada lajur UserId.
Tapis anak tetingkap Proses mengikut Aplikasi untuk menunjukkan hanya sambungan aplikasi web. Berbilang sesi menunjukkan pertanyaan yang sama ini berjalan berulang kali.
11.1.3 Penyelesaian dan Pengesahan
Masalahnya berpunca daripada dua isu: pelaksanaan pertanyaan yang berlebihan dan indeks yang hilang. Langkah-langkah penyelesaian:
- Buat indeks yang hilang:
CREATE NONCLUSTERED INDEX IX_Users_UserId ON Users (UserId); - Hubungi pasukan pembangunan tentang hukuman mati yang berlebihan. Siasatan mendedahkan masalah pertanyaan N+1 dalam kod aplikasi di mana gelung mendapatkan semula butiran pengguna untuk setiap item dalam senarai.
- Ubah suai aplikasi untuk mengumpulkan carian pengguna ke dalam satu pertanyaan menggunakan klausa IN atau parameter bernilai jadual.
- Sahkan pembetulan dengan memantau Monitor Aktiviti selepas penggunaan. Penggunaan CPU menurun kepada 35-40%, pelaksanaan seminit berkurangan kepada 200-300, dan masa tindak balas aplikasi kembali normal.
11.2 Kajian Kes: Menyelesaikan Isu Penyekatan
Pengguna melaporkan bahawa sistem kemasukan pesanan secara berkala membeku selama 30-60 saat sebelum menyambung semula operasi biasa.
11.2.1 Mengesan Rantaian Penyekatan
Buka Monitor Aktiviti semasa salah satu peristiwa pembekuan ini dan kembangkan anak tetingkap Proses:
- Disusun mengikut ID sesi untuk melihat semua sesi diatur.
- Berbilang sesi menunjukkan nilai dalam Disekat Oleh lajur, semuanya menunjuk ke ID Sesi 73.
- Sesi 73 menunjukkan '1' dalam Penyekat Kepala lajur, mengesahkan ia adalah punca utama.
- . Jenis Tunggu untuk sesi yang disekat menunjukkan LCK_M_X, menunjukkan mereka sedang menunggu untuk kunci eksklusif.
- . Tunggu Sumber lajur mendedahkan penyekatan berada pada jadual Pesanan.
11.2.2 Menganalisis Punca
Klik kanan Sesi 73 dan pilih Butiran untuk melihat arahan:
UPDATE Orders
SET Status = 'Processing',
LastModified = GETDATE()
WHERE OrderId IN (SELECT OrderId FROM #TempOrders);
Kemas kini ini adalah sebahagian daripada kerja pemprosesan kelompok yang dijalankan setiap jam. Menyemak Log Masuk lajur mengesahkan sesi itu tergolong dalam akaun perkhidmatan pemprosesan kelompok.
Pertanyaan itu menahan kunci pada jadual Pesanan semasa memproses beribu-ribu pesanan. The Menunggu masa untuk sesi yang disekat meningkat secara berterusan, mengesahkan operasi jangka panjang ini adalah masalahnya.
11.2.3 Melaksanakan Pembaikan
Resolusi jangka pendek:
- Butiran Dokumen Sesi 73 termasuk teks pertanyaan dan tempoh.
- Benarkan kemas kini selesai secara semula jadi kerana ia adalah pemprosesan kelompok yang sah.
- Selepas selesai, sahkan sesi yang disekat jelas dan operasi normal disambung semula.
Penyelesaian jangka panjang dilaksanakan:
- Jadualkan semula kerja kelompok untuk dijalankan semasa waktu luar puncak (2-4 PG dan bukannya semasa waktu perniagaan).
- Ubah suai pemprosesan kelompok untuk mengemas kini pesanan dalam kelompok yang lebih kecil daripada 100 rekod pada satu masa, melepaskan kunci antara kelompok.
- Tambah indeks pada lajur OrderId untuk mempercepatkan operasi kemas kini.
- Pertimbangkan pengasingan SNAPSHOT untuk operasi baca untuk mengurangkan kesan penyekatan.
11.3 Kajian Kes: Mengenalpasti Pelaksanaan Pertanyaan Berlebihan
Pemantauan pangkalan data menunjukkan penggunaan CPU telah meningkat secara beransur-ansur sepanjang bulan lalu, tetapi tiada perubahan jelas berlaku dalam kod aplikasi.
11.3.1 Mengesan Kiraan Pelaksanaan Abnormal
Buka Monitor Aktiviti dan periksa anak tetingkap Pertanyaan Mahal Terkini:
- Disusun mengikut Pelaksanaan/min untuk melihat most pertanyaan yang kerap dilaksanakan.
- Pertanyaan teratas menunjukkan 37,000 pelaksanaan seminit—jauh lebih tinggi daripada sebarang pertanyaan lain.
- Klik kanan dan pilih Edit Teks Pertanyaan.
- Pertanyaan mendapatkan maklumat kategori produk:
SELECT CategoryId, CategoryName FROM ProductCategories WHERE CategoryId = @CategoryId; - Pertanyaan mudah ini sepatutnya pantas dan boleh disimpan dalam cache, namun ia melaksanakan berpuluh-puluh ribu kali seminit.
11.3.2 Mengesan kepada Kod Permohonan
Dalam anak tetingkap Proses, cari sesi yang melaksanakan pertanyaan ini:
- Perhatikan Permohonan lajur menunjukkan "ProductCatalogService".
- Klik kanan salah satu sesi ini dan pilih Proses Jejak masuk SQL Server Profil.
- SQL Profiler mendedahkan pertanyaan yang dijalankan berulang kali dalam berturut-turut pantas dengan nilai CategoryId yang berbeza.
- Hubungi pasukan pembangunan yang menguruskan ProductCatalogService untuk semakan kod.
Semakan kod mendedahkan masalah: perubahan baru-baru ini mendapatkan semula penyenaraian produk dengan kategori. Untuk setiap produk dalam set hasil (selalunya 1,000+ produk), kod membuat panggilan pangkalan data yang berasingan untuk mengambil maklumat kategori—masalah pertanyaan N+1 klasik.
11.3.3 Mengoptimumkan Aplikasi
Laksanakan pembetulan yang betul:
- Ubah suai pertanyaan aplikasi untuk menggunakan SERTAI mendapatkan semula produk dan kategorinya dalam satu panggilan pangkalan data:
SELECT p.ProductId, p.ProductName, c.CategoryId, c.CategoryName FROM Products p INNER JOIN ProductCategories c ON p.CategoryId = c.CategoryId WHERE p.Active = 1; - Sebarkan kod yang dikemas kini dan memantau Pemantau Aktiviti.
- Sahkan pembetulan: Pelaksanaan seminit untuk pertanyaan kategori menurun daripada 37,000 kepada bawah 100, dan penggunaan CPU keseluruhan berkurangan sebanyak 40%.
- Dokumenkan pelajaran yang dipelajari dan berkongsi dengan pasukan pembangunan untuk mengelakkan isu yang sama dalam perubahan kod masa hadapan.
12. Mengesan Kemungkinan Rasuah Pangkalan Data
Walaupun Monitor Aktiviti tidak direka khusus untuk mengesan rasuah pangkalan data, corak tertentu dalam paparannya mungkin mencadangkan isu asas rasuah yang memerlukan siasatan lanjut.
12.1 Gejala Kerosakan Pangkalan Data Berpotensi
Jika rasuah pangkalan data wujud dan sedang diakses, anda mungkin melihat:
1. Dalam Anak Tetingkap Proses:
- Sesi tersekat dalam keadaan DIGANTUNG dengan jenis menunggu yang luar biasa
- Proses yang menunjukkan keadaan ralat
- Pertanyaan gagal berulang kali
2. Dalam Anak Tetingkap Menunggu Sumber:
- Jenis menunggu berkaitan I/O luar biasa yang boleh menunjukkan masalah cakera (walaupun ini lebih berkemungkinan menunjukkan isu perkakasan dan bukannya rasuah logik)
3. Dalam Pertanyaan Mahal Terkini:
- Pertanyaan dengan bacaan fizikal yang luar biasa tinggi jika mereka berulang kali cuba membaca halaman yang rosak
12.2 Semakan Lanjut dengan DBCC CHECKDB
Apabila Monitor Aktiviti memaparkan gejala yang mencadangkan kemungkinan rasuah, anda harus segera menjalankan DBCC CHECKDB untuk mengesahkan integriti pangkalan data. Perintah ini mengimbas semua halaman pangkalan data, mengesahkan jumlah semak dan menyemak ralat konsistensi logik.
Untuk mengetahui lebih lanjut tentang cara menggunakan DBCC CHECKDB untuk menyemak dan membetulkan kerosakan pangkalan data, lihat kami panduan DBCC CHECKDB yang komprehensif.
12.3 Pembaikan dengan Alat Profesional
Jika DBCC CHECKDB mengesahkan rasuah pangkalan data, anda mempunyai beberapa pilihan untuk pembaikan:
- Pendekatan yang diutamakan ialah memulihkan daripada sandaran baik yang diketahui. Lihat panduan komprehensif kami tentang cara membuat sandaran dan memulihkan SQL Server pangkalan data.
- Untuk rasuah kecil, DBCC CHECKDB dengan REPAIR_REBUILD boleh menyelesaikan isu.
- Untuk pangkalan data kritikal tanpa sandaran terkini, profesional Perisian pemulihan SQL dan perkhidmatan selalunya boleh memulihkan data yang tidak boleh dilakukan oleh pilihan pembaikan terbina dalam.
13. kesimpulan
SQL Server Monitor Aktiviti berdiri sebagai alat yang tidak ternilai untuk pentadbir pangkalan data, memberikan pandangan segera tentang prestasi pelayan dan membantu mendiagnosis isu dengan cepat dan berkesan.
13.1 Ringkasan Perkara Utama
Sepanjang panduan ini, kami telah meneroka cara Monitor Aktiviti membantu anda memahami dan menyelesaikan masalah SQL Server prestasi:
- Monitor Aktiviti menyediakan keterlihatan masa nyata ke dalam proses, menunggu, pertanyaan dan I/O melalui antara muka grafik yang teratur.
- Lima anak tetingkap—Ikhtisar, Proses, Penantian Sumber, I/O Fail Data dan Pertanyaan Mahal Terkini—masing-masing menawarkan perspektif unik tentang aktiviti pelayan.
- Senario penyelesaian masalah biasa seperti pelaksanaan pertanyaan yang berlebihan, rantaian sekatan dan penggunaan CPU yang tinggi menjadi terurus dengan penyiasatan Monitor Aktiviti yang sistematik.
- Walaupun berkuasa, Monitor Aktiviti mempunyai had termasuk kekurangan data sejarah, kumpulan jenis tunggu dan overhed pemantauan yang mempengaruhi aplikasinyacabiliti.
- Menambah Monitor Aktiviti dengan pertanyaan DMV, sp_WhoIsActive, Peristiwa Lanjutan dan alat pihak ketiga yang berpotensi mencipta strategi pemantauan yang komprehensif.
- Mengikuti amalan terbaik untuk selang penyegaran, menutup Monitor Aktiviti apabila tidak digunakan dan menggabungkan berbilang anak tetingkap untuk korelasi memaksimumkan nilainya sambil meminimumkan kesan.
13.2 Pemantauan Aktiviti sebagai Sebahagian daripada Kit Alat Anda
Monitor Aktiviti harus berfungsi sebagai alat respons pertama anda untuk penyiasatan prestasi, bukan satu-satunya alat anda. Kekuatannya terletak pada menyediakan keterlihatan serta-merta semasa penyelesaian masalah aktif, membantu anda menentukan dengan cepat sama ada pangkalan data adalah halangan dan mengenal pasti aspek khusus yang memerlukan penyiasatan lebih mendalam.
Fikirkan Monitor Aktiviti sebagai analog dengan papan pemuka di dalam kereta anda—ia memberitahu anda dengan segera jika ada sesuatu yang tidak kena dan membantu anda mengenal pasti bidang kebimbangan umum. Sama seperti papan pemuka kereta anda tidak memberitahu anda dengan tepat mengapa lampu enjin semak menyala, Monitor Aktiviti menunjukkan anda ke arah masalah tanpa sentiasa mendedahkan punca lengkapnya. Analisis yang lebih mendalam itu memerlukan alat dan kepakaran tambahan.
Integrasikan Monitor Aktiviti ke dalam kit alat yang lebih luas yang merangkumi analisis pelan pelaksanaan, penjejakan statistik menunggu, penyelesaian pemantauan sejarah dan amalan terbaik prestasi. Gunakannya bersama dengan strategi pengindeksan yang betul, teknik pengoptimuman pertanyaan dan perancangan kapasiti.
13.3 Meneruskan Perjalanan Pembelajaran Anda
Menguasai Monitor Aktiviti hanyalah satu langkah untuk menjadi pentadbir pangkalan data yang berkesan. Teruskan membina kemahiran anda dengan:
- Belajar untuk mentafsir rancangan pelaksanaan dan mengenal pasti operasi yang tidak cekap
- persefahaman SQL Server statistik tunggu dan implikasinya
- Mempelajari reka bentuk indeks dan teknik pengoptimuman
- Meneroka SQL Serverseni bina dan cara ia memproses pertanyaan
- Mempraktikkan metodologi penyelesaian masalah yang sistematik
- Membina pengalaman dengan Peristiwa Lanjutan untuk pengesanan terperinci
- Memahami tahap pengasingan transaksi dan kesan prestasinya
Setiap penyiasatan prestasi dengan Monitor Aktiviti mengajar anda sesuatu yang baharu tentang caranya SQL Server berfungsi dan cara aplikasi berinteraksi dengan pangkalan data. Dokumentasikan penemuan anda, kongsi pengetahuan dengan rakan sekerja dan bina library penyelesaian untuk masalah biasa.
13.4 Sumber Tambahan
Kembangkan pengetahuan anda dengan sumber berharga ini:
- Buka Monitor Aktiviti dalam SQL Server Studio Pengurusan (SSMS)
: Rasmi SQL Server dokumentasi tentang cara membuka Monitor Aktiviti dalam SQL Server Studio Pengurusan (SSMS).
- Memantau aktiviti
: Rasmi SQL Server dokumen tentang cara menggunakan Monitor Aktiviti.
14. Soalan Lazim (FAQ)
Q: Apa itu SQL Server Pemantau Aktiviti?
A: SQL Server Monitor Aktiviti ialah alat terbina dalam SQL Server Studio Pengurusan yang memaparkan maklumat masa nyata tentang proses yang berjalan pada a SQL Server contoh dan kesannya terhadap sumber pelayan. Ia menyediakan papan pemuka grafik dengan lima anak tetingkap yang menunjukkan pelbagai aspek aktiviti pelayan termasuk penggunaan pemproses, tugas menunggu, kadar I/O, sesi aktif dan pertanyaan mahal.
S: Bagaimanakah cara saya membuka Monitor Aktiviti dalam SSMS?
J: Anda boleh membuka Monitor Aktiviti menggunakan empat kaedah: (1) Klik ikon Monitor Aktiviti dalam bar alat SSMS, (2) Klik kanan anda SQL Server nama contoh dalam Object Explorer dan pilih Memantau aktiviti, (3) Tekan Ctrl + Alt + A, atau (4) Konfigurasikan SSMS untuk melancarkannya secara automatik melalui Alatan -> Pilihan -> alam Sekitar -> Startiub.
S: Apakah kebenaran yang saya perlukan untuk menggunakan Monitor Aktiviti?
A: Anda memerlukannya LIHAT NEGERI SERVER kebenaran untuk melihat most Maklumat Pemantau Aktiviti. Untuk anak tetingkap I/O Fail Data, anda juga memerlukan sama ada BUAT PANGKALAN DATA, UBAH SEBARANG PANGKALAN DATA, Atau LIHAT MANA-MANA DEFINISI kebenaran. Tanpa kebenaran ini, Monitor Aktiviti boleh dibuka tetapi memaparkan anak tetingkap kosong.
S: Mengapa Monitor Aktiviti saya dijeda atau tidak berfungsi?
J: Monitor Aktiviti biasanya dijeda kerana isu kebenaran, versi SSMS yang lapuk atau sambungan jauh yang dilumpuhkan. Untuk menyelesaikan: (1) Kemas kini kepada versi SSMS terkini, (2) Sahkan anda mempunyai kebenaran LIHAT NEGERI PELAYANG, (3) Semak bahawa sambungan jauh didayakan pada SQL Server contoh, (4) Restart SSMS, dan (5) Cuba sambungkan dengan pengesahan Windows dan bukannya pengesahan SQL jika terpakaicable.
S: Apakah perbezaan antara Monitor Aktiviti dan sp_WhoIsActive?
J: Monitor Aktiviti ialah alat grafik yang terbina dalam SSMS yang menyediakan anak tetingkap tersusun untuk aspek pemantauan yang berbeza. sp_WhoIsActive ialah prosedur tersimpan ciptaan komuniti percuma yang mengembalikan maklumat sesi terperinci dalam set hasil tunggal dengan jenis tunggu yang lebih khusus, butiran sekatan dan pilihan penyesuaian daripada Monitor Aktiviti. Monitor Aktiviti adalah lebih baik untuk penerokaan visual, manakala sp_WhoIsActive cemerlang dalam pemantauan berskrip dan menyediakan maklumat yang lebih terperinci.
S: Adakah Monitor Aktiviti memberi kesan kepada prestasi pelayan?
J: Ya, Monitor Aktiviti mempunyai overhed yang boleh diukur kerana ia menanyakan DMV sistem pada setiap selang penyegaran. Kesannya meningkat dengan kadar penyegaran yang lebih rendah—Microsoft memberi amaran bahawa selang masa di bawah 10 saat boleh menjejaskan prestasi pelayan. Sentiasa tutup Monitor Aktiviti apabila tidak menggunakannya secara aktif, dan pertimbangkan selang muat semula 30-60 saat pada pelayan pengeluaran di bawah beban berat.
S: Bolehkah saya mendapatkan data Monitor Aktiviti menggunakan T-SQL?
J: Ya, Activity Monitor menanyakan pandangan pengurusan dinamik sistem seperti sys.dm_exec_requests, sys.dm_exec_sessions, sys.dm_os_wait_stats dan sys.dm_exec_query_stats. Anda boleh bertanya kepada DMV ini secara terus menggunakan T-SQL untuk mendapatkan maklumat yang setara secara pengaturcaraan, mendayakan skrip pemantauan tersuai dan pengumpulan data automatik.
S: Apakah selang muat semula lalai?
J: Selang muat semula lalai ialah 10 saat. Anda boleh menukar ini dengan mengklik kanan di mana-mana dalam anak tetingkap Gambaran Keseluruhan, memilih Selang Segar, dan memilih daripada pilihan yang dipratentukan: 1 saat, 5 saat, 10 saat, 30 saat, 1 minit atau 1 jam. Selang yang lebih rendah memberikan lebih banyak paparan masa nyata tetapi meningkatkan overhed pemantauan.
S: Bagaimanakah saya boleh membuka Monitor Aktiviti secara automatik pada SSMS startup?
J: Konfigurasikan pelancaran automatik melalui pilihan SSMS: Navigasi ke Alatan -> Pilihan -> alam Sekitar -> Startiub, Kemudian pilih Buka Penjelajah Objek dan Monitor Aktiviti daripada Pada startiub jatuh turun. Monitor Aktiviti akan dibuka secara automatik setiap kali anda menyambung ke pelayan dalam SSMS.
S: Apakah batasan Monitor Aktiviti?
J: Had utama termasuk: (1) Tiada storan data sejarah atau keupayaan arah aliran, (2) Jenis tunggu dikumpulkan ke dalam kategori dan bukannya ditunjukkan secara khusus, (3) Beberapa jenis tunggu seperti CXPACKET mungkin tidak muncul, (4) Syot kilat titik dalam masa mungkin terlepas isu sementara, (5) Overhed pemantauan boleh memberi kesan kepada pelayan yang sibuk, (6) Tidak boleh merentasi data, mekanisme amaran untuk proaktif (7) SQL Server contoh. Untuk keperluan ini, tambahkan Monitor Aktiviti dengan Peristiwa Lanjutan, set pengumpulan data atau alat pemantauan pihak ketiga.
Mengenai Penulis
Yuan Sheng ialah pentadbir pangkalan data kanan (DBA) dengan lebih 10 tahun pengalaman dalam SQL Server persekitaran dan pengurusan pangkalan data perusahaan. Beliau telah berjaya menyelesaikan ratusan senario pemulihan pangkalan data merentas perkhidmatan kewangan, penjagaan kesihatan dan organisasi pembuatan.
Yuan pakar dalam SQL Server pemulihan pangkalan data, penyelesaian ketersediaan tinggi, dan pengoptimuman prestasi. Pengalaman amali beliau yang luas termasuk mengurus pangkalan data berbilang terabait, melaksanakan Kumpulan Ketersediaan Sentiasa Aktif dan membangunkan strategi sandaran dan pemulihan automatik untuk sistem perniagaan yang kritikal.
Melalui kepakaran teknikal dan pendekatan praktikalnya, Yuan menumpukan pada mencipta panduan komprehensif yang membantu pentadbir pangkalan data dan profesional IT menyelesaikan kompleks SQL Server cabaran dengan cekap. Dia kekal terkini dengan yang terkini SQL Server keluaran dan teknologi pangkalan data Microsoft yang sedang berkembang, menguji senario pemulihan secara kerap untuk memastikan cadangannya mencerminkan amalan terbaik dunia sebenar.
Ada soalan tentang SQL Server pemulihan atau memerlukan panduan penyelesaian masalah pangkalan data tambahan? Yuan mengalu-alukan maklum balas dan cadangan untuk menambah baik sumber teknikal ini.


















