[20160205]大量子游標引起的等待事件.txt
[20160205]大量子游標引起的等待事件.txt
--測試大量子游標引起的等待事件(11G):
1.環境:
SCOTT@book> @ &r/ver1
PORT_STRING VERSION BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
CREATE TABLE t (id NUMBER);
INSERT INTO t VALUES (1);
create unique index pk_t on t(id);
alter table t add constraint pk_t primary key (id);
COMMIT;
execute dbms_stats.gather_table_stats(user,'t');
SYS@book> @ &r/hide _cursor_obsolete_threshold
NAME DESCRIPTION DEFAULT_VALUE SESSION_VALUE SYSTEM_VALUE
--------------------------- ------------------------------------------------ -------------- -------------- ------------
_cursor_obsolete_threshold Number of cursors per parent before obsoletion. TRUE 1024 1024
2.測試:
$ cat aa.sql
DECLARE
l_count PLS_INTEGER;
BEGIN
FOR i IN 1..100
LOOP
EXECUTE IMMEDIATE 'ALTER SESSION SET optimizer_index_caching = '||i;
FOR j IN 1..10000
LOOP
EXECUTE IMMEDIATE 'ALTER SESSION SET optimizer_index_cost_adj = '||j;
EXECUTE IMMEDIATE 'SELECT count(*) FROM t' into l_count;
END LOOP;
END LOOP;
END;
/
sqlplus scott/book @aa.sql &
sqlplus scott/book @aa.sql &
sqlplus scott/book @aa.sql &
--sql_id='5tjqf7sx5dzmj'
SELECT event, COUNT (*)
FROM V$ACTIVE_SESSION_HISTORY
WHERE sql_id = '5tjqf7sx5dzmj'
and sample_time >= '2016/02/05 11:00'
GROUP BY event
ORDER BY COUNT (*) DESC ;
EVENT COUNT(*)
---------------------------------------- ----------
423
cursor: pin S wait on X 342
kksfbc child completion 146
library cache lock 7
cursor: mutex S 6
cursor: mutex X 3
library cache: mutex X 2
7 rows selected.
# perf top -k /u01/app/oracle/product/11.2.0.4/dbhome_1/bin/oracle
PerfTop: 2122 irqs/sec kernel:11.0% exact: 0.0% [1000Hz cycles], (all, 24 CPUs)
------------------------------------------------------------------------------------------------------------
samples pcnt function DSO
_______ _____ ____________________________ ____________________________________________________
2401.00 36.4% kgxShared /u01/app/oracle/product/11.2.0.4/dbhome_1/bin/oracle
1504.00 22.8% kgxRelease /u01/app/oracle/product/11.2.0.4/dbhome_1/bin/oracle
168.00 2.5% kkscsSearchChildList /u01/app/oracle/product/11.2.0.4/dbhome_1/bin/oracle
146.00 2.2% kkscsPruneChild /u01/app/oracle/product/11.2.0.4/dbhome_1/bin/oracle
140.00 2.1% kspnum /u01/app/oracle/product/11.2.0.4/dbhome_1/bin/oracle
122.00 1.8% kkshGetNextChild /u01/app/oracle/product/11.2.0.4/dbhome_1/bin/oracle
--可以看到基本與10g一樣。主要都是cursor: pin S wait on X,kksfbc child completion。
--另外11g透過隱含引數_cursor_obsolete_threshold限制了子游標產生的數量。11.2.0.4該引數設定是1024.
--而11.2.03設定是100.
--透過perf觀察可以發現主要呼叫函式是kgxShared,kgxRelease.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-1986665/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 阻止游標預設事件事件
- 由row cache lock等待事件引起的效能問題事件
- [20221101]如何減少BIND_EQUIV_FAILURE引起的子游標.txtUIAI
- 查出引起等待的sql,並kill該引起等待的sqlSQL
- 【等待事件】ORACLE常見等待事件事件Oracle
- 【等待事件】等待事件系列(5.1)--Enqueue(佇列等待)事件ENQ佇列
- Oracle Edit product卡死不動,引起的等待事件‘library cache pin’解決方案Oracle事件
- Oracle的等待事件Oracle事件
- 等待事件事件
- [20150709]慎用標量子查詢.txt
- [20130104]oracle能有多少子游標.txtOracle
- [20191125]探究等待事件的本源.txt事件
- [20191203]大量resmgrcpu quantum等待事件.txt事件
- [20130409]Data file init write等待事件.txt事件
- input 獲取游標位置與設定游標位置
- (12)mysql 中的游標MySql
- Solidity事件,等待事件Solid事件
- [20200325]慎用標量子查詢.txt
- 網路上的等待事件事件
- RAC中的等待事件事件
- ORACLE中的等待事件Oracle事件
- 【TUNE_ORACLE】等待事件之等待事件類別Oracle事件
- 【等待事件之二】log 相關的等待事件
- [20191127]探究等待事件的本源4.txt事件
- winform之滑鼠進入及停留相關事件及游標cursorORM事件
- 等待事件分析事件
- oracle等待事件Oracle事件
- Oracle 等待事件Oracle事件
- px等待事件事件
- 等待事件 二事件
- [20220518]enq FU - contention等待事件.txtENQ事件
- [20161228]奇怪log file sync等待事件.txt事件
- [20130904]等待事件wait for a undo record.txt事件AI
- [20150520]使用gdb檢視等待事件.txt事件
- 【等待事件】等待事件系列(1)--User I/O型別事件型別
- 【效能調整】等待事件(三) 常見等待事件(一)事件
- 【效能調整】等待事件(四) 常見等待事件(二)事件
- 大量insert引起的enq: HW - contention等待ENQ