我正在運行MySql 5.0.22,並且有一個真正不方便的表,其中包含大約500萬行。從大的MySql表中刪除單行導致「鎖定超時」
有些但不是所有的行都被外鍵引用到另一個表中。
迄今爲止所有嘗試剔除未引用的行都失敗了,每次都會導致鎖定超時。
將我想要的備份表的行復制到鎖定超時也失敗。
可疑,甚至應該立即完成像一個聲明下面也將失敗,並「鎖定超時」:
DELETE FROM mytable WHERE uid_pk = 1 LIMIT 1;
...它是在這一點上,我已經江郎才盡。
編輯:爲什麼它的價值,我一直在通過我的開發系統上的工作,所以只有我實際上在這個時候使用數據庫,所以不應該有SQL以外的任何鎖定'正在運行。
任何MySql大師在那裏都有如何馴服這個流氓表的建議?
編輯#2:按照要求,表結構:
CREATE TABLE `tunknowncustomer` (
`UID_PK` int(11) NOT NULL auto_increment,
`UNKNOWNCUSTOMERGUID` varchar(36) NOT NULL,
`CREATIONDATE` datetime NOT NULL,
`EMAIL` varchar(100) default NULL,
`CUSTOMERUID` int(11) default NULL,
PRIMARY KEY (`UID_PK`),
KEY `IUNKNOWCUST_CUID` (`CUSTOMERUID`),
KEY `IUNKNOWCUST_UCGUID` (`UNKNOWNCUSTOMERGUID`),
CONSTRAINT `tunknowncustomer_ibfk_1` FOREIGN KEY (`CUSTOMERUID`) REFERENCES `tcustomer` (`UID_PK`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8$$
注意,嘗試刪除該FK也超時。
您正在使用數據庫引擎? InnoDB,MyISAM,另一個? – 2011-05-05 19:48:30
織補細節!我正在使用InnoDB。 – Rocjoe 2011-05-06 20:21:26
可以在哪裏有一個開放的事務嗎?嘗試重新啓動MySQL。 – Galz 2011-05-07 00:46:59