小编Roc*_*joe的帖子

从大型MySql表中删除单行会导致"锁定超时"

我正在运行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也会超时.

mysql innodb locking

10
推荐指数
2
解决办法
5676
查看次数

标签 统计

innodb ×1

locking ×1

mysql ×1