Introduction
Dans certains contextes, pour traquer l’activité SQL d’un process en
particulier au sein d’un serveur Sybase, les commandes dbcc sqltext
et
sp_showplan
ne retournent pas les informations adéquates pour diverses
raisons.
dbcc sqltext
peut retourner des caractères bizarres.sp_showplan
peut retourner des plans d’exécutions sur des conditions, etc. si l’on se trouve dans une boucle ou pour d’autres raisons.
La commande non supportée dbcc pss
permet de traquer le texte SQL et
l’intégralité du plan d’exécution pour le process que l’on souhaite
analyser.
La commande dbcc pss
doit être utilisée parcimonieusement, cette dernière
pouvant faire tomber un dataserver.
La commande dbcc pss
Pour pouvoir utiliser la commande dbcc pss
, le trace flag 3604 doit être
activé.
Syntaxe de la commande dbcc pss
dbcc pss (suid, spid, printopt [0|1|2|3|4|5])
suid |
suid du process | 0 |
spid |
spid du process | 0 |
printopt |
|
Dans la plupart des cas, c’est l’affichage des arbres d’exécution qui nous intéressera : par conséquent c’est l’option 1 qui sera généralement mise en œuvre.
Exemples d’utilisation de la commande dbcc pss
dbcc pss (0, 0, 1) |
Lorsque suid et spid valent 0 : les
informations sur tous les process sont affichées.
Cette option doit être évitée ! |
dbcc pss (1, 0, 1) |
Les informations sur tous les process
ayant le suid égal à 1 sont affichées.
À éviter également. |
dbcc pss (0, 16, 1) |
Les informations sur le process ayant le
spid égal à 16 sont affichées. |
Exemples pratiques
Dans la sortie de la commande pss
, en général, on s’attarde plus
particulièrement sur les paragraphes :
T-SQL command
PPLAN (execution) p_hdrstep plan
Traitement SQL classique
dbcc traceon(3604)
go
dbcc pss (0, 16, 1)
go
(le résultat est volontairement abrégé).
PSS (any state) for suid 1 - spid 16:
...
T-SQL command (may be truncated): declare @id int
select @id = 1 while @id < 100000
begin insert into HISTO values (@id,'CGC') select @id = @id +1 end ....
PPLAN (execution) p_hdrstep plan:
QUERY PLAN FOR STATEMENT 1 (at line 1).
STEP 1
The type of query is DECLARE.
QUERY PLAN FOR STATEMENT 2 (at line 2).
STEP 1
The type of query is SELECT.
QUERY PLAN FOR STATEMENT 3 (at line 3).
STEP 1
The type of query is COND.
QUERY PLAN FOR STATEMENT 4 (at line 5).
STEP 1
The type of query is INSERT.
The update mode is direct.
TO TABLE
HISTO
Using I/O Size 2 Kbytes for data pages.
QUERY PLAN FOR STATEMENT 5 (at line 6).
STEP 1
The type of query is SELECT.
QUERY PLAN FOR STATEMENT 6 (at line 0).
STEP 1
The type of query is GOTO.
Procédure stockée
dbcc traceon(3604)
go
dbcc pss (0, 23, 1)
go
(le résultat est volontairement abrégé).
PSS (any state) for suid 1 - spid 23:
...
T-SQL command (may be truncated): exec sp_pss ...
PPLAN (execution) p_hdrstep plan:
QUERY PLAN FOR STATEMENT 1 (at line 5).
STEP 1
The type of query is SELECT.
QUERY PLAN FOR STATEMENT 2 (at line 6).
STEP 1
The type of query is COND.
QUERY PLAN FOR STATEMENT 3 (at line 8).
STEP 1
The type of query is SELECT.
FROM TABLE
HISTO
Nested iteration.
Table Scan.
Forward scan.
Positioning at start of table.
Using I/O Size 16 Kbytes for data pages.
With LRU Buffer Replacement Strategy for data pages.
QUERY PLAN FOR STATEMENT 4 (at line 0).
STEP 1
The type of query is GOTO.