adaptive cursor sharing… · acs- warm-up period now that the cursor is bind sensitive all its...
TRANSCRIPT
![Page 1: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/1.jpg)
Adaptive Cursor Sharing…Oracle answer to sharing cursors and optimizing SQL
@MohamedHouriwww.hourim.wordpress.com
![Page 2: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/2.jpg)
Mohamed Houri
I have a PhD in Fluid Mechanics
I am an Oracle ACE
I blog here : www.hourim.wordpress.com
I tweet using this handle : @MohamedHouri
I co-authored 3 chapters in this book Chapter 4: Adaptive Cursor Sharing Chapter 5: Stabilizing Query performance using SPM Chapter 6: DDL optimization Tips, Techniques ,and Tricks
![Page 4: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/4.jpg)
Agenda
ACS : Prerequisite ACS : Warm-up period ACS : step down in favor of ECS ACS : How to properly cancel it ACS : my opinion
![Page 5: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/5.jpg)
ACS- Prerequisite
To be elected for ACS a cursor needs first to be Bind SensitiveTo be Bind Sensitive a cursor needs to use Bind Variable
– either directly – through cursor_sharing set to FORCE
![Page 6: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/6.jpg)
ACS- Prerequisite
![Page 7: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/7.jpg)
ACS- Prerequisite
![Page 8: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/8.jpg)
ACS- Prerequisite
![Page 9: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/9.jpg)
ACS- Prerequisite
![Page 10: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/10.jpg)
ACS- Prerequisite
DEMO
![Page 11: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/11.jpg)
Agenda
ACS : Prerequisite ACS : Warm-up period ACS : step down in favor of ECS ACS : How to properly cancel it ACS : my opinion
![Page 12: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/12.jpg)
ACS- Warm-up period
Now that the cursor is BIND SENSITIVE all its future executions will be monitored
The goal of this monitoring phase is to decide when it is time tomark the cursor BIND AWARE
As long as cursor is not marked BIND AWARE ACS will not kick in
The time it will take for the cursor to switch from BIND SENSITIVE
to BIND AWARE is known as the : WARM-UP period
![Page 13: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/13.jpg)
ACS- Warm-up period
![Page 14: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/14.jpg)
ACS- Warm-up period
How do you think Oracle handles this warm-up period?
![Page 15: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/15.jpg)
ACS- Warm-up period
![Page 16: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/16.jpg)
ACS- Warm-up period
![Page 17: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/17.jpg)
ACS- Warm-up period
![Page 18: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/18.jpg)
ACS- Warm-up period
![Page 19: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/19.jpg)
ACS- Warm-up periodBased upon (BUCKET_ID, COUNT) Oracle uses 3 rules to switch a
cursor from bind sensitive to bind aware
![Page 20: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/20.jpg)
ACS- Warm-up periodBased upon (BUCKET_ID, COUNT) Oracle uses 3 rules to switch a
cursor from bind sensitive to bind aware
When executions (COUNT) concern only ADJACENT BUCKET_ID. i.e. (0,1) and (1,2)
![Page 21: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/21.jpg)
ACS- Warm-up periodBased upon (BUCKET_ID, COUNT) Oracle uses 3 rules to switch a
cursor from bind sensitive to bind aware
When executions (COUNT) concern only ADJACENT BUCKET_ID. i.e. (0,1) and (1,2)
When executions (COUNT) concern only DISTANT BUCKET_ID. i.e. (0,2)
![Page 22: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/22.jpg)
ACS- Warm-up periodBased upon (BUCKET_ID, COUNT) Oracle uses 3 rules to switch a
cursor from bind sensitive to bind aware
When executions (COUNT) concern only ADJACENT BUCKET_ID. i.e. (0,1) and (1,2)
When executions (COUNT) concern only DISTANT BUCKET_ID. i.e. (0,2)
When executions (COUNT) concern ALL BUCKET_ID. i.e. (0,1,2)
![Page 23: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/23.jpg)
ACS- Warm-up period - ADJACENT When executions (COUNT) concern only ADJACENT
BUCKET_ID. i.e. (0,1) and (1,2)
![Page 24: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/24.jpg)
ACS- Warm-up period - ADJACENT
COUNT(BUCKET_ID n° 0) = COUNT(BUCKET_ID n°1)
COUNT(BUCKET_ID n° 1) = COUNT(BUCKET_ID n°2)
The next execution will mark the cursor BIND AWARE and compile a new execution plan
When executions (COUNT) concern only ADJACENT BUCKET_ID. i.e. (0,1) and (1,2)
![Page 25: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/25.jpg)
ACS- Warm-up period - ADJACENT
DEMO
![Page 26: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/26.jpg)
ACS- Warm-up period - DISTANT
When executions (COUNT) concern only DISTANT BUCKET_ID. i.e. (0,2)
![Page 27: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/27.jpg)
ACS- Warm-up period - DISTANT
When executions (COUNT) concern only DISTANT BUCKET_ID. i.e. (0,2)
COUNT(BUCKET_ID n° 2) = CEIL ( COUNT(BUCKET_ID n°0 /3))
The next execution will mark the cursor BIND AWARE and compile a new execution plan
![Page 28: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/28.jpg)
ACS- Warm-up period - DISTANT
DEMO
![Page 29: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/29.jpg)
ACS- Warm-up period - ALL
When executions (COUNT) concern ALL BUCKET_ID. i.e. (0,1,2)
![Page 30: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/30.jpg)
ACS- Warm-up period - ALL
------------------------------------------------------------------ File name: fv_will_cs_be_bind_aware-- Author : Mohamed Houri ([email protected])-- Date : 29/08/2015-- Purpose : When supplied with 3 parameters -- pin_cnt_bucket_0 : count of BUCKET_ID n°0-- pin_cnt_bucket_1 : count of BUCKET_ID n°1-- pin_cnt_bucket_2 : count of BUCKET_ID n°2-- This function will return a status:-- Y --> cursor will be BIND AWARE-- N --> cursor will NOT be BIND AWARE----------------------------------------------------------------
SQL> select fv_will_cs_be_bind_aware (0,1,2) from dual;
When executions (COUNT) concern ALL BUCKET_ID. i.e. (0,1,2)
![Page 31: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/31.jpg)
ACS- Warm-up period - ALL
DEMO
![Page 32: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/32.jpg)
Agenda
ACS : Prerequisite ACS : Warm-up period ACS : step down in favor of ECS ACS : How to properly cancel it ACS : my opinion
![Page 33: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/33.jpg)
ACS : step down in favor of ECS
What happens when a cursor becomes BIND AWARE ?
![Page 34: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/34.jpg)
ACS : step down in favor of ECS
![Page 35: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/35.jpg)
ACS : step down in favor of ECS
![Page 36: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/36.jpg)
ACS : step down in favor of ECS
![Page 37: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/37.jpg)
ACS : step down in favor of ECS
How does the Extended Cursor Sharing layer code work?
![Page 38: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/38.jpg)
ACS : step down in favor of ECS
The Extended Cursor Sharing layer code works as follows:
For each execution of a BIND AWARE cursor ECS willGet the selectivity cube of the used bind variable
![Page 39: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/39.jpg)
ACS : step down in favor of ECS
The Extended Cursor Sharing layer code works as follows:
For each execution of a BIND AWARE cursor ECS willGet the selectivity cube of the used bind variable
Check if this selectivity cube is covered by an exiting child cursor low-high range selectivity stored in V$SQL_CS_SELECTIVITY view
![Page 40: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/40.jpg)
ACS : step down in favor of ECS
The Extended Cursor Sharing layer code works as follows:
For each execution of a BIND AWARE cursor ECS willGet the selectivity cube of the used bind variable
Check if this selectivity cube is covered by an exiting child cursor low-high range selectivity stored in V$SQL_CS_SELECTIVITY viewo IF YES then it will share this child cursoro IF NO then it will compile a new execution plan and
insert a new low-high selectivity range in the V$SQL_CS_SELECTIVITY view
![Page 41: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/41.jpg)
ACS : step down in favor of ECS
There are 4 types of Cursor Selectivity Cube
![Page 42: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/42.jpg)
ACS : step down in favor of ECS
There are 4 types of Cursor Selectivity Cube
1. Cursor Selectivity Cube for FREQUENCY histogram
![Page 43: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/43.jpg)
ACS : step down in favor of ECS
There are 4 types of Cursor Selectivity Cube
1. Cursor Selectivity Cube for FREQUENCY histogram
2. Cursor Selectivity Cube for popular HYBRID histogram
![Page 44: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/44.jpg)
ACS : step down in favor of ECS
There are 4 types of Cursor Selectivity Cube
1. Cursor Selectivity Cube for FREQUENCY histogram
2. Cursor Selectivity Cube for popular HYBRID histogram
3. Cursor Selectivity Cube for non-popular HYBRID histogram having an endpoint number
![Page 45: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/45.jpg)
ACS : step down in favor of ECS
There are 4 types of Cursor Selectivity Cube
1. Cursor Selectivity Cube for FREQUENCY histogram
2. Cursor Selectivity Cube for popular HYBRID histogram
3. Cursor Selectivity Cube for non-popular HYBRID histogram having an endpoint number
4. Cursor Selectivity Cube for non-captured non-popular HYBRID histogram
![Page 46: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/46.jpg)
ACS : step down in favor of ECS
1. Cursor Selectivity Cube for FREQUENCY histogram
DEMO
![Page 47: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/47.jpg)
Agenda
ACS : Prerequisite ACS : Warm-up period ACS : step down in favor of ECS ACS : How to properly cancel it ACS : my opinion
![Page 48: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/48.jpg)
ACS : How to properly cancel it
We can cancel ACS using /*+ no_bind_aware */
![Page 49: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/49.jpg)
ACS : How to properly cancel it
We can cancel ACS using /*+ no_bind_aware */
"_optimizer_extended_cursor_sharing" = 'none' "_optimizer_extended_cursor_sharing_rel" = 'none'
![Page 50: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/50.jpg)
ACS : How to properly cancel it
We can cancel ACS using /*+ no_bind_aware */
"_optimizer_extended_cursor_sharing" = 'none' "_optimizer_extended_cursor_sharing_rel" = 'none'
"_optim_peek_user_binds"= false
![Page 51: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/51.jpg)
ACS : How to properly cancel it
We can cancel ACS using /*+ no_bind_aware */
"_optimizer_extended_cursor_sharing" = 'none' "_optimizer_extended_cursor_sharing_rel" = 'none'
"_optim_peek_user_binds"= false
Fix a SPM (as from 12cR2)
![Page 52: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/52.jpg)
ACS : How to properly cancel it
DEMO
![Page 53: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/53.jpg)
Agenda
ACS : Prerequisite ACS : Warm-up period ACS : step down in favor of ECS ACS : How to properly cancel it ACS : my opinion
![Page 54: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/54.jpg)
ACS : my opinion• Let ACS-ECS working by default
• Don’t change any relative parameter
• But when it starts causing performance issue you must be able to link this to ACS and to know how to fix it
• Use the following query to diagnose ACS issues
SELECT
sql_id, count(1)
FROM
gv$sql_cs_selectivity
GROUP BY
sql_id
ORDER BY 2 desc;
![Page 55: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/55.jpg)
ACS : my opinion
SELECT sql_id, count(1)FROM gv$sql_cs_selectivityGROUP BY sql_idORDER BY 2 desc;
SQL_ID COUNT(1)------------- ----------7ck8k7bnqpnv 4fnmsn1tyq9g0y 2cxzn1tyqhkzgb 2
SELECT sql_id, count(1)FROM gv$sql_cs_selectivityGROUP BY sql_idORDER BY 2 desc;
SQL_ID COUNT(1)------------- ----------7zwq7z1nj7vga 16847320c1j862cvqgh99 51294dp7vscw26sf 26
![Page 56: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/56.jpg)
ACS : my opinionSQL> @nonshared 7zwq7z1nj7vgaShow why existing SQL child cursors were not reused (V$SQL_SHARED_CURSOR)... -----------------SQL_ID : 7zwq7z1nj7vgaADDRESS : 000000406DBB30F8CHILD_ADDRESS : 00000042CE36F7E8CHILD_NUMBER : 0BIND_EQUIV_FAILURE : YREASON
../..
-----------------SQL_ID : 7zwq7z1nj7vgaADDRESS : 000000406DBB30F8CHILD_ADDRESS : 00000045B5C5E5D8CHILD_NUMBER : 99BIND_EQUIV_FAILURE : Y
![Page 57: Adaptive Cursor Sharing… · ACS- Warm-up period Now that the cursor is BIND SENSITIVE all its future executions will be monitored The goal of this monitoring phase is to decide](https://reader033.vdocument.in/reader033/viewer/2022050107/5f45bd06bc49855f1f5219ff/html5/thumbnails/57.jpg)