我正在运行MySql 5.0.22并且有一个非常笨重的表,包含大约500万行.
某些但不是所有行都由另一个表的外键引用.
到目前为止,所有剔除未引用行的尝试都失败了,每次都会导致锁定超时.
将我想要的行复制到备用表也会因锁定超时而失败.
可疑的是,即使是一个应该像下面那样立即完成的声明也会因"锁定超时"而失败:
DELETE FROM mytable WHERE uid_pk = 1 LIMIT 1;
Run Code Online (Sandbox Code Playgroud)
......就在这时,我已经没有想法了.
编辑:为了它的价值,我一直在我的开发系统上完成这个工作,所以现在只有我实际上在使用数据库所以不应该在我正在运行的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$$
Run Code Online (Sandbox Code Playgroud)
注意,试图放弃FK也会超时.