Я использую MySql 5.0.22 и у меня действительно громоздкая таблица, содержащая приблизительно 5 миллионов строк.
Некоторые, но не все строки ссылаются внешним ключом на другую таблицу.
До сих пор все попытки отбраковки строк, на которые нет ссылок, приводили к истечению времени ожидания блокировки каждый раз.
Копирование строк, которые я хочу, в альтернативную таблицу также не удавалось с временем ожидания блокировки.даже утверждение, которое должно завершиться мгновенно, как показано ниже, также потерпит неудачу с «тайм-аутом блокировки»:
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$$
Примечание,пытаясь дроp FK также истекает.