sql >> Databáze >  >> RDS >> Sqlserver

Jak mohu přihlásit a najít nejdražší dotazy?

  1. Použijte SQL Server Profiler (v nabídce nástrojů v SSMS) k vytvoření trasování, které zaznamenává tyto události:

     RPC:Completed
     SP:Completed
     SP:StmtCompleted
     SQL:BatchCompleted
     SQL:StmtCompleted
    
  2. Můžete začít se standardní šablonou trasování a oříznout ji. Neuvedli jste, zda to bylo pro konkrétní databázi nebo celý server, pokud je to pro konkrétní databáze, zahrňte sloupec DatabaseID a nastavte filtr na vaši databázi (SELECT DB_ID('dbname') ). Ujistěte se, že je pro každou událost zahrnut sloupec logických dat čtení. Nastavte trasování na protokolování do souboru. Pokud toto trasování necháváte běžet bez dozoru na pozadí, je dobré nastavit maximální velikost trasovacího souboru, řekněme 500 MB nebo 1 GB, pokud máte dostatek místa (vše závisí na tom, kolik aktivity je na serveru, takže budete to muset vysát a uvidíte).

  3. Krátce spusťte trasování a poté jej pozastavte. Přejděte na Soubor->Export->Definice trasování skriptu a vyberte verzi DB a uložte do souboru. Nyní máte skript SQL, který vytváří trasování, které má mnohem menší režii než běh přes GUI profileru. Když spustíte tento skript, vypíše ID trasování (obvykle @ID=2 ); poznamenejte si to.

  4. Jakmile budete mít trasovací soubor (.trc) (buď bylo trasování dokončeno kvůli dosažení maximální velikosti souboru, nebo jste zastavili běžící trasování pomocí

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

Trasování můžete načíst do profileru nebo použít ClearTrace (velmi praktické) nebo jej načíst do tabulky takto:

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

Poté můžete spustit dotaz agregovat data, jako je tento:

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

Jakmile identifikujete nákladné dotazy, můžete generovat a zkoumat skutečné prováděcí plány.



  1. LPAD v SQL Server 2008

  2. Úplné šifrování MariaDB v klidu a během přepravy pro maximální ochranu dat – část druhá

  3. Jak migrovat z Oracle na MySQL / Percona Server

  4. Jak mohu v MySQL provést „vložit, pokud neexistuje“?