DML操作涉及到的系統表

action929發表於2007-02-17

使用者表上沒有鎖,卻不能做select 操作,很奇怪哦。

[@more@]

使用者反映對錶做select 操作,被堵塞了,一直在等待
我覺得很奇怪,表是rowdata,除非發生了表升級,否則不因該被堵塞住阿。
查了一下,在表上沒有鎖,再查程式,果然是lock sleep ,再一查才發現,原來是在等待 syscolumns 表的鎖。
有個drop tble 死在那了,結果導致對 syscolumns 表有表一級的鎖,
這個原因導致的select 無法操作,倒是我一直沒有注意到過了。
順便作了一個測試
我用了一個測試庫,因為系統標無法lock table,所以我用update 把syscolumsn 這張表上關於test1 ,這張表的頁鎖住了。
然後對test1表做操作。
發現 select * from test1;select id from test1;update test1 set id=2 ;delte from test1 where id=2都無法操作
但是delet from test1 可以操作

總結;當系統表syscolumns被鎖住之後,對錶的操作中涉及到列資訊的操作都不可用。
不知道select ,update ,delete 這些DML操作還涉及到些什麼系統表呢。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/133835/viewspace-899977/,如需轉載,請註明出處,否則將追究法律責任。

相關文章