Этот запрос появляется в журнале медленных запросов mysql: он занимает 11 секунд.
INSERT INTO record_visits
( record_id, visit_day )
VALUES
( '567', NOW() );
Таблица содержит 501043 записей, и ее структура выглядит следующим образом:
CREATE TABLE IF NOT EXISTS `record_visits` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`record_id` int(11) DEFAULT NULL,
`visit_day` date DEFAULT NULL,
`visit_cnt` bigint(20) DEFAULT '1',
PRIMARY KEY (`id`),
UNIQUE KEY `record_id_visit_day` (`record_id`,`visit_day`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;
Что может быть не так? Почему эта вставка занимает так много времени?
UPDATE
Я выяснил, в чем причина всех неприятностей. На этой таблице был создан очень тяжелый триггер «ON INSERT». Вместе с блокировкой таблицы MyISAM это дало огромное время запроса для запроса INSERT. Вероятно, поэтому @Oswald в комментариях не смог воспроизвести эту ситуацию.
Настоящая проблема здесь в том, что MySQL не регистрирует запросы внутри триггеров, и вы всегда должны помнить о них при профилировании вашего приложения.
Спасибо за вашу помощь, все, принимая ответ, который был закрыт для решения.