[20211025]12g sequemce nocahe測試.txt
[20211025]12g sequemce nocahe測試.txt
--//上個星期我發現19c生產系統有幾個sequence開發給設定為nocache屬性.導致出現row cache lock.
--//當我單獨查詢該語句的等待事件時,出現一個我以前從來沒見過的row cache mutex的等待事件.
--//難道19c做了某些改進,開始使用mutex。
--//我在12c重複測試看看。
1.環境:
SCOTT@test01p> @ ver1
PORT_STRING VERSION BANNER CON_ID
------------------------------ -------------- -------------------------------------------------------------------------------- ----------
IBMPC/WIN_NT64-9.1.0 12.2.0.1.0 Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production 0
create table job_times (sid number, time_ela number,method varchar2(20));
create sequence seq1 nocache;
SCOTT@test01p> @ ddl scott.seq1
C300
------------------------------------------------------------------------------------------------------------------------------------------------------------------
CREATE SEQUENCE "SCOTT"."SEQ1" MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 NOCACHE NOORDER NOCYCLE NOKEEP NOSCALE GLOBAL ;
$ cat m14.txt
set verify off
--//host sleep $(echo &&3/50 | bc -l )
variable vmethod varchar2(20);
exec :vmethod := '&&2';
insert into job_times values ( sys_context ('userenv', 'sid') ,dbms_utility.get_time ,:vmethod) ;
commit ;
declare
v_id number;
v_d date;
v_val VARCHAR2(1000);
l_count PLS_INTEGER;
begin
for i in 1 .. &&1 loop
--//select value into v_val from v$nls_parameters where parameter = 'NLS_CHARACTERSET';
--//select value into v_val from nls_database_parameters where parameter = 'NLS_CHARACTERSET';
--//select sql_text into v_val from v$sql where rownum=1;
SELECT /* &&3 */ seq1.NEXTVAL into v_id FROM DUAL;
end loop;
end ;
/
update job_times set time_ela = dbms_utility.get_time - time_ela where sid=sys_context ('userenv', 'sid') and method=:vmethod;
commit;
quit
2.測試:
--//我沒有想到這麼慢,在沒有開啟cache的情況下,只能減少併發數量以及迴圈次數1e4:
$ zzdate;seq 20 | xargs -I{} -P 20 sqlplus -s -l scott/book@test01p @m14.txt 1e4 P=20 {} 1 >/dev/null;zzdate
trunc(sysdate)+10/24+05/1440+21/86400 == 2021/10/25 10:05:21
trunc(sysdate)+10/24+05/1440+42/86400 == 2021/10/25 10:05:42
--// 21秒。
SYS@test01p> @tpt/ashtop event,sql_id "module='SQL*Plus' and username='SCOTT'" trunc(sysdate)+10/24+05/1440+21/86400 trunc(sysdate)+10/24+05/1440+42/86400
Total
Seconds AAS %This EVENT SQL_ID FIRST_SEEN LAST_SEEN
--------- ------- ------- ---------------------------------------- ------------- ------------------- -------------------
338 16.1 92% | row cache lock 9cp836a3k67w2 2021-10-25 10:05:22 2021-10-25 10:05:41
26 1.2 7% | row cache mutex 9cp836a3k67w2 2021-10-25 10:05:22 2021-10-25 10:05:41
1 .0 0% | 9cp836a3k67w2 2021-10-25 10:05:29 2021-10-25 10:05:29
1 .0 0% | 2021-10-25 10:05:33 2021-10-25 10:05:33
--//出現row cache lock,row cache mutex 兩個等待事件。而且row cache mutex等待的出現事件在2021-10-25 10:05:22 到
--//2021-10-25 10:05:41之間,也就是從測試開始到結束。
--//你可以發現對比11g多了一個row cache mutex的等待事件。
--//11g 下類似測試:
SYS@book> @ashtop event,sql_id "module='SQL*Plus' and username='SCOTT'" trunc(sysdate)+09/24+12/1440+14/86400 trunc(sysdate)+09/24+14/1440+24/86400
Total
Seconds AAS %This EVENT SQL_ID FIRST_SEEN LAST_SEEN
--------- ------- ------- ---------------------------------------- ------------- ------------------- -------------------
6288 48.4 97% | row cache lock 9cp836a3k67w2 2021-10-25 09:12:14 2021-10-25 09:14:23
152 1.2 2% | 9cp836a3k67w2 2021-10-25 09:12:14 2021-10-25 09:14:23
4 .0 0% | 2021-10-25 09:12:51 2021-10-25 09:14:21
2 .0 0% | a01fjfup7ruah 2021-10-25 09:12:52 2021-10-25 09:13:12
2 .0 0% | gxgnku5buj8cm 2021-10-25 09:13:51 2021-10-25 09:14:09
1 .0 0% | log file switch (checkpoint incomplete) 9cp836a3k67w2 2021-10-25 09:14:07 2021-10-25 09:14:07
1 .0 0% | 1mm9uymckm8z4 2021-10-25 09:12:28 2021-10-25 09:12:28
1 .0 0% | 24c64p3xa1hr5 2021-10-25 09:13:28 2021-10-25 09:13:28
1 .0 0% | 7b9znjngh150d 2021-10-25 09:13:17 2021-10-25 09:13:17
1 .0 0% | fsc8vbts8tu24 2021-10-25 09:12:26 2021-10-25 09:12:26
1 .0 0% | g2q7km1t9cdnj 2021-10-25 09:13:29 2021-10-25 09:13:29
1 .0 0% | gpa5h7jh3dg4d 2021-10-25 09:14:10 2021-10-25 09:14:10
1 .0 0% | gty6quqfxrgna 2021-10-25 09:13:39 2021-10-25 09:13:39
13 rows selected.
--//僅僅出現row cache lock 等待事件。
SYS@test01p> Select method,count(*),round(avg(TIME_ELA),0),sum(TIME_ELA) from scott.job_times group by method order by 3 ;
METHOD COUNT(*) ROUND(AVG(TIME_ELA),0) SUM(TIME_ELA)
-------------------- ---------- ---------------------- -------------
P=20 20 1941 38826
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2839140/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20211025]11g sequemce nocahe測試.txt
- [20211025]12c sequence nocache測試補充.txt
- [20220531]測試quiz night.txtUI
- [20211231]函式索引測試.txt函式索引
- [20220603]測試quiz night(補充).txtUI
- [20211012]測試遠端監聽.txt
- [20190423]oradebug peek測試指令碼.txt指令碼
- [20210218]xargs 與here doc測試.txt
- [20190416]exclusive latch測試指令碼.txt指令碼
- [20191119]測試dbms_system.wait_for_event.txtAI
- [20020226]iptables PREROUTING POSTROUTING 應用測試.txt
- [20190301]簡單測試linux fsfreeze命令.txtLinux
- [20180627]測試bbed是否支援管道命令.txt
- [20180308]測試ARG_MAX引數.txt
- [20241121]測試軟軟解析遇到的疑惑.txt
- [20220104]in list 幾種寫法效能測試.txt
- [20211013]測試遠端監聽補充.txt
- [20190502]查詢條件不等於測試.txt
- [20190423]簡單測試latch nowilling等待模式.txt模式
- [20190409]latch get 引數where and why測試.txt
- [20190225]測試如何使用dg快速主庫.txt
- [20181006]建立測試使用者scott.txt
- [20190211]簡單測試埠是否開啟.txt
- [20220304]測試library cache mutex遇到的疑問.txtMutex
- [20200304]測試網路狀態TIME_WAIT.txtAI
- [20201113]測試CURSOR_SPACE_FOR_TIME(10g).txt
- [20220228]測試Max_idle_blocker_time 引數.txtBloC
- [20210812]測試sql語句子游標的效能.txtSQL
- [20201209]模擬ora-04031的測試例子.txt
- [20210419]測試18c SQL Translation Framework.txtSQLFramework
- [20190416]完善shared latch測試指令碼2.txt指令碼
- [20190213]測試服務端開啟那些埠.txt服務端
- [20231026]enq TX - allocate ITL entry的測試4.txtENQ
- [20200310]測試網路狀態TIME_WAIT(windows).txtAIWindows
- [20201116]測試CURSOR_SPACE_FOR_TIME=false(11g).txtFalse
- [20190211]簡單測試埠是否開啟(補充).txt
- 測試測試測試測試測試測試
- [20230510]測試使用tpt ddl指令碼是否產生日誌.txt指令碼