- 最后登录
- 2014-9-10
- 在线时间
- 34 小时
- 威望
- 62
- 金钱
- 508
- 注册时间
- 2012-1-30
- 阅读权限
- 50
- 帖子
- 53
- 精华
- 1
- 积分
- 62
- UID
- 187
|
1#
发表于 2012-6-26 10:22:32
|
查看: 8691 |
回复: 11
最近一段时间一套环境经常报锁,调查发现有一条update语句会请求子表的TM share锁,该语句并不涉及到主键的更新。
SQL_TEXT:
UPDATE T_POLICY_FEE TPF
SET TPF.FEE_STATUS = '3', TPF.MATCH_RESULT = '0'
WHERE TPF.PREM_ID = (SELECT T.PREM_ID
FROM T_POLICY_PREM TPP, T_POLICY_FEE T
WHERE TPP.PREM_ID = T.PREM_ID
AND T.FEE_ID = 234868002)
AND TPF.FEE_ID <> 234868002
AND TPF.PAY_MODE = 3
AND TPF.FEE_STATUS = 2;
Event 10704 trc:
ksqcmi: TM,1a8d8,0 mode=2 timeout=21474836
……省略……
ksqcmi: TM,1ab75,0 mode=4 timeout=21474836
ksqcmi: TM,1ab75,0 mode=0 timeout=0
ksqcmi: TM,1abf2,0 mode=4 timeout=21474836
……省略……
ksqcmi: TM,1b3f6,0 mode=3 timeout=21474836
……省略……
ksqcmi: TM,217ed,0 mode=4 timeout=21474836
ksqcmi: TM,5a8bb,0 mode=2 timeout=21474836
标红色部分显示请求了TM share锁,这3个表是T_POLICY_FEE的子表,在对应的外键上均无索引。记得delete主表的时候如果子表外键无索引会请求子表TM share锁,为什么这条UPDATE语句也要请求子表的TMshare锁,求解。 |
|