Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Bagaimana Saya Bisa Masuk dan Menemukan Kueri Termahal?

  1. Gunakan SQL Server Profiler (pada menu alat di SSMS) untuk membuat jejak yang mencatat peristiwa berikut:

     RPC:Completed
     SP:Completed
     SP:StmtCompleted
     SQL:BatchCompleted
     SQL:StmtCompleted
    
  2. Anda dapat mulai dengan templat jejak standar dan memangkasnya. Anda tidak menentukan apakah ini untuk database tertentu atau seluruh server, jika untuk Db tertentu, sertakan kolom DatabaseID dan atur filter ke DB Anda (SELECT DB_ID('dbname') ). Pastikan kolom data Bacaan logis disertakan untuk setiap peristiwa. Atur jejak untuk masuk ke file. Jika Anda membiarkan jejak ini berjalan tanpa pengawasan di latar belakang, ada baiknya untuk menetapkan ukuran file pelacakan maksimum, katakanlah 500MB atau 1GB jika Anda memiliki banyak ruang (semuanya tergantung pada seberapa banyak aktivitas yang ada di server, jadi Anda harus menghisapnya dan melihatnya).

  3. Mulai jejak secara singkat lalu jeda. Goto File->Export->Script Trace Definition dan pilih versi DB Anda, dan simpan ke file. Anda sekarang memiliki skrip sql yang membuat jejak yang memiliki overhead jauh lebih sedikit daripada menjalankan melalui GUI profiler. Saat Anda menjalankan skrip ini, ia akan menampilkan ID Jejak (biasanya @ID=2 ); catat ini.

  4. Setelah Anda memiliki file pelacakan (.trc) (pelacakan selesai karena mencapai ukuran file maksimum atau Anda menghentikan pelacakan yang sedang berjalan menggunakan

    EXEC sp_trace_setstatus @ID, 0
    EXEC sp_trace_setstatus @ID, 2

Anda dapat memuat jejak ke profiler, atau menggunakan ClearTrace (sangat praktis) atau memuatnya ke dalam tabel seperti:

SELECT * INTO TraceTable
FROM ::fn_trace_gettable('C:\location of your trace output.trc', default)

Kemudian Anda dapat menjalankan kueri untuk menggabungkan data seperti ini:

SELECT COUNT(*) AS TotalExecutions, 
    EventClass, CAST(TextData as nvarchar(2000))
 ,SUM(Duration) AS DurationTotal
 ,SUM(CPU) AS CPUTotal
 ,SUM(Reads) AS ReadsTotal
 ,SUM(Writes) AS WritesTotal
FROM TraceTable
GROUP BY EventClass, CAST(TextData as nvarchar(2000))
ORDER BY ReadsTotal DESC

Setelah Anda mengidentifikasi kueri yang mahal, Anda dapat membuat dan memeriksa rencana eksekusi yang sebenarnya.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Replikasi Sql Server memerlukan nama server yang sebenarnya untuk membuat koneksi ke server

  2. Memecahkan Masalah Kinerja CPU SQL Server

  3. Pemulihan Cadangan Paralel SQL Server -2

  4. Menggunakan T-SQL, kembalikan elemen delimited ke-n dari sebuah string

  5. Kolom Pivot Dinamis di SQL Server