Sybase - dbcc pss


1- 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.

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.

2- La commande dbcc pss

Pour pouvoir utiliser la commande dbcc pss, le trace flag 3604 doit être activé.

2-1- 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 0, sortie standard. 1, affichage de tous les descripteurs et des arbres d'exécution. 2, affichage de tous les verrous pris par le process dans le fichier de log.

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.

2-2- 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 seront affichées. Cette option doit être évitée.
dbcc pss (1, 0, 1) les informations sur tous les process ayant le suid égal à 1 seront affichées.
dbcc pss (0, 16, 1) les informations sur le process ayant le spid égal à 16 seront affichées.

3- Exemples pratiques

Dans la sortie de la commande pss, en général, on s'attarde plus particulièrement sur les paragraphes :

3-1- 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.

3-2- 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.

Annexe

Historique

Version Date Commentaires
1.0 11/2004 Version initiale

Liens

The Totally Unauthorized List of Sybase DBCC Commands