模擬mode=4 and name='TX'的enqueue
事情源於一個朋友問到,他的生產庫中出現很多enqueue等待。重啟應用後沒多久,又出現這些等待。於是,我先讓他執行以下語句,先找到enqueue的mode和name:
select sid,
chr(bitand(p1, -16777216)/16777215) ||
chr(bitand(p1,16711680)/65535) "Name",
(bitand(p1, 65535)) "Mode"
from v$session_wait
where event = 'enqueue';
然後他告訴我,mode為4,name為TX。
這是基本上可以確定應該是由於ITL過低而引起的。ITL由兩個引數決定:init trans和max trans。通常table的max trans為255,應該不會超過。而init trans預設是2,該值在併發性較大的table上顯然不夠用。所以我告訴他,應該是init trans過低引起的。
如何證明?我想,兩種方法:一種是讓3個人同時喊一、二、三,大家同時更新同一個表的同一個block裡的不同行。這實現起來比較麻煩。還有一種方法就是將max trans降低,比如降低到3。然後開4個session去更新同一個表的同一個block裡的不同行。應該可以復現這種情況。
SQL> create table t as select object_name,object_type from user_objects where rownum<10;
表已建立。
SQL> alter table t maxtrans 3;
表已更改。
SQL> select ini_trans,max_trans from user_tables where table_name='T';
INI_TRANS MAX_TRANS
---------- ----------
1 3
然後開4個session,分別提交以下sql語句:
SQL> update t set object_type='aaa' where object_name='ADD_JOB_HISTORY';
已更新 1 行。
可以發現第四個session發生等待。於是再開第五個session,執行如下sql:
select sid,
chr(bitand(p1, -16777216)/16777215) ||
chr(bitand(p1,16711680)/65535) "Name",
(bitand(p1, 65535)) "Mode"
from v$session_wait
where event = 'enqueue';
SID Name Mode
---------- ---- ----------
10 TX 4
從而可以復現該現象,從而從側面證明,由於ITL過低會導致mode為4,name為TX的enqueue等待。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9842/viewspace-850634/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- TX ENQUEUE阻塞的理解ENQ
- oracle ITL TX MODE 4問題Oracle
- noip模擬4
- NOIP模擬賽 #4
- 模擬人生4 The Sims 4 for Mac(角色模擬經營)支援離線Mac
- 集訓 4 & 模擬 5
- noip 模擬賽 4 & 3
- C語言模擬試題4C語言
- 暑假集訓CSP提高模擬4
- 暑假集訓CSP提高模擬4 & 暑假集訓CSP提高模擬5
- 初三奧賽模擬測試4
- HIVE運算的時候報HADOOP Name node is in safe mode 錯HiveHadoop
- 模擬人生4 Mac(經營模擬遊戲)全DLC可無限金幣版Mac遊戲
- 【比賽】暑假集訓CSP提高模擬4
- Keil的軟體模擬和硬體模擬
- 經營模擬遊戲:模擬人生4 Mac中文版(全DLC可無限金幣)遊戲Mac
- webpack4 Mode的預設設定Web
- [20181030]模擬分散式事務掛起導致TX鎖爭用.txt分散式
- 模擬銀行排隊時間—4佇列佇列
- BNDS 2024/4/6模擬賽題解
- 暑假集訓CSP提高模擬2, 3, 4, 5
- 模擬
- LPDDR4 byte mode
- 模擬Promise的功能Promise
- C4top-搶紅包 (模擬-結構體排序)結構體排序
- day4 連結串列-模擬與快慢指標指標
- 「模擬賽」A 層多校聯訓 4(賣品:CTH)
- 有限元模擬 有限體積模擬
- 10.6 模擬賽(NOIP 模擬賽 #9)
- git 模擬Git
- ACP模擬
- 模擬題
- promise的模擬實現Promise
- CMRR的模擬(原理版)
- ASP.NET中Session的sessionState 4種mode模式ASP.NETSession模式
- 《全面戰爭模擬器》:詼諧幽默的沙盒戰爭模擬遊戲遊戲
- TC ENQUEUEENQ
- C4top-N個數求和 (分數求和模擬)