Aide sur un plan d'exécution
Bonsoir,
J'ai une même requête qui a des temps d'exécution différents.
Au début la réponse est immédiate puis si je la lance plusieurs fois de suite elle prend plusieurs minutes.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
Voici ce que l’on obtient alors que le temps de réponse est normal (voire immédiat)
Plan d'exécution
----------------------------------------------------------
Plan hash value: 626068950
------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 7 | 246 (2)| 00:00:03 |
| 1 | SORT ORDER BY | | 1 | 7 | 246 (2)| 00:00:03 |
| 2 | VIEW | VM_NWVW_2 | 1 | 7 | 246 (2)| 00:00:03 | ?
| 3 | HASH UNIQUE | | 1 | 70 | 246 (2)| 00:00:03 |
| 4 | NESTED LOOPS | | 3 | 210 | 245 (2)| 00:00:03 |
| 5 | NESTED LOOPS | | 3 | 174 | 245 (2)| 00:00:03 |
|* 6 | TABLE ACCESS FULL | PARTICIPER | 4 | 108 | 241 (2)| 00:00:03 |
|* 7 | TABLE ACCESS BY INDEX ROWID| ADHERENT | 1 | 31 | 1 (0)| 00:00:01 |
|* 8 | INDEX UNIQUE SCAN | PK_ADHERENT | 1 | | 0 (0)| 00:00:01 |
|* 9 | INDEX UNIQUE SCAN | PK_AGPRDTVA | 1 | 12 | 0 (0)| 00:00:01 |
------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
6 - filter(NVL("FL_FACTURE",0)=0 AND SUBSTR("ESS_ID",1,2)=SUBSTR(TO_CHAR(2015,'9999')
,4,2) AND NVL("FL_CALENDAR",0)=1 AND NVL("FL_DESINSCRIPTION",0)=0)
7 - filter(NVL("ADHE_CLOTURE",0)=0 AND "TARI_TYPE_FACT"<>'NONE')
8 - access("ADHE_ID"=DECODE("FL_FACTCONS",1,"GET_CONSO_ADHERENT"("PARTICIPER"."ADHE_I
D"),"PARTICIPER"."ADHE_ID"))
9 - access("AGPRDTVA"."PRDT_PROD"='P' AND "AGPRDTVA"."PRDT_PAYS"="PAYS_ID")
Statistiques
----------------------------------------------------------
332 recursive calls
0 db block gets
1747 consistent gets
0 physical reads
0 redo size
437 bytes sent via SQL*Net to client
349 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
1 sorts (memory)
0 sorts (disk)
8 rows processed
|
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
Voici ce que l’on obtient alors que le temps de réponse est anormalement long (env 2 min voire plus)
Cela se produit en général lors de la 3ème ou 4ème exécution de la requête.
Plan d'exécution
----------------------------------------------------------
Plan hash value: 626068950
------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 7 | 246 (2)| 00:00:03 |
| 1 | SORT ORDER BY | | 1 | 7 | 246 (2)| 00:00:03 |
| 2 | VIEW | VM_NWVW_2 | 1 | 7 | 246 (2)| 00:00:03 | ?
| 3 | HASH UNIQUE | | 1 | 70 | 246 (2)| 00:00:03 |
| 4 | NESTED LOOPS | | 3 | 210 | 245 (2)| 00:00:03 |
| 5 | NESTED LOOPS | | 3 | 174 | 245 (2)| 00:00:03 |
|* 6 | TABLE ACCESS FULL | PARTICIPER | 4 | 108 | 241 (2)| 00:00:03 |
|* 7 | TABLE ACCESS BY INDEX ROWID| ADHERENT | 1 | 31 | 1 (0)| 00:00:01 |
|* 8 | INDEX UNIQUE SCAN | PK_ADHERENT | 1 | | 0 (0)| 00:00:01 |
|* 9 | INDEX UNIQUE SCAN | PK_AGPRDTVA | 1 | 12 | 0 (0)| 00:00:01 |
------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
6 - filter(NVL("FL_FACTURE",0)=0 AND SUBSTR("ESS_ID",1,2)=SUBSTR(TO_CHAR(2015,'9999')
,4,2) AND NVL("FL_CALENDAR",0)=1 AND NVL("FL_DESINSCRIPTION",0)=0)
7 - filter(NVL("ADHE_CLOTURE",0)=0 AND "TARI_TYPE_FACT"<>'NONE')
8 - access("ADHE_ID"=DECODE("FL_FACTCONS",1,"GET_CONSO_ADHERENT"("PARTICIPER"."ADHE_I
D"),"PARTICIPER"."ADHE_ID"))
9 - access("AGPRDTVA"."PRDT_PROD"='P' AND "AGPRDTVA"."PRDT_PAYS"="PAYS_ID")
Statistiques
----------------------------------------------------------
643120 recursive calls
0 db block gets
3069812 consistent gets
0 physical reads
0 redo size
437 bytes sent via SQL*Net to client
349 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
1 sorts (memory)
0 sorts (disk)
8 rows processed
|
Je ne comprends pas :
- à quoi correspond la vue VM_NWVW_2 ?
- que le coût et la durée entre les deux plans d'exécution sont les mêmes alors que dans la réalité le 2ème résultat est beaucoup plus long ?
- à quoi correspond recursive calls et consistent gets et pourquoi ils explosent entre les deux plans d'exécution ?
Merci d'avance pour vos éclairages et vos pistes de recherche.