108
Chapitre 5. Analyse des performances
Server, à l’aide de la fonction fn_trace_gettable(). Cette fonction accepte deux
paramètres, le nom du fichier de trace, et le nombre de fichiers à importer en cas de
présence de fichiers de rollover :
SELECT * INTO dbo.matrace
FROM sys.fn_trace_gettable('c:\temp\matrace.trc', default);
Lit les fichiers de trace dont le nom de base est matrace.trc et les insère dans la
table dbo.matrace. La valeur 'default' indique que tous les fichiers de rollover présents doivent être insérés.
Ensuite, rien n’est plus facile que de lancer des requêtes sur la table pour obtenir
les informations désirées. Voici par exemple une requête listant par ordre décroissant
les requêtes les plus coûteuses :
SELECT
CAST(TextData as varchar(8000)) as TextData,
COUNT(*) as Executions,
AVG(reads) as MoyenneReads,
AVG(CPU) as MoyenneCPU,
AVG(Duration) / 1000 as MoyenneDurationMillisecondes
FROM dbo.matrace
WHERE EventClass IN (
SELECT trace_event_id
FROM sys.trace_events
WHERE name LIKE 'S%Completed')
GROUP BY CAST(TextData as varchar(8000))
ORDER BY MoyenneReads DESC, MoyenneCPU DESC;
Pour ne prendre que les requêtes, nous cherchons dans la vue sys.trace_events
les événements qui commencent par 'S' (SQL ou SP) et qui se terminent par 'Completed'.
Rejouer une trace
Une trace peut être rejouée, c’est-à-dire que les événements qu’elle contient
peuvent être réexécutés sur un serveur SQL, si toutefois les événements contenus
dans la trace sont rejouables. Pour créer une trace rejouable, le plus simple est
d’utiliser le modèle TSQL_Replay, qui ajoute tous les événements nécessaires à une
trace entièrement rejouable. Lorsque vous ouvrez une trace enregistrée, un menu
« Replay » est ajouté, ainsi qu’une barre d’outils (voir figure 5.9).
Figure 5.9 — Boutons de replay
Chapitre 5. Analyse des performances
Server, à l’aide de la fonction fn_trace_gettable(). Cette fonction accepte deux
paramètres, le nom du fichier de trace, et le nombre de fichiers à importer en cas de
présence de fichiers de rollover :
SELECT * INTO dbo.matrace
FROM sys.fn_trace_gettable('c:\temp\matrace.trc', default);
Lit les fichiers de trace dont le nom de base est matrace.trc et les insère dans la
table dbo.matrace. La valeur 'default' indique que tous les fichiers de rollover présents doivent être insérés.
Ensuite, rien n’est plus facile que de lancer des requêtes sur la table pour obtenir
les informations désirées. Voici par exemple une requête listant par ordre décroissant
les requêtes les plus coûteuses :
SELECT
CAST(TextData as varchar(8000)) as TextData,
COUNT(*) as Executions,
AVG(reads) as MoyenneReads,
AVG(CPU) as MoyenneCPU,
AVG(Duration) / 1000 as MoyenneDurationMillisecondes
FROM dbo.matrace
WHERE EventClass IN (
SELECT trace_event_id
FROM sys.trace_events
WHERE name LIKE 'S%Completed')
GROUP BY CAST(TextData as varchar(8000))
ORDER BY MoyenneReads DESC, MoyenneCPU DESC;
Pour ne prendre que les requêtes, nous cherchons dans la vue sys.trace_events
les événements qui commencent par 'S' (SQL ou SP) et qui se terminent par 'Completed'.
Rejouer une trace
Une trace peut être rejouée, c’est-à-dire que les événements qu’elle contient
peuvent être réexécutés sur un serveur SQL, si toutefois les événements contenus
dans la trace sont rejouables. Pour créer une trace rejouable, le plus simple est
d’utiliser le modèle TSQL_Replay, qui ajoute tous les événements nécessaires à une
trace entièrement rejouable. Lorsque vous ouvrez une trace enregistrée, un menu
« Replay » est ajouté, ainsi qu’une barre d’outils (voir figure 5.9).
Figure 5.9 — Boutons de replay
