此查询出现在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 ;
出了什么问题?为什么这个INSERT需要这么长时间?
UPDATE
我发现,什么是一切烦恼的原因。在该表上创建了一个非常沉重的“ON INSERT”触发器。与MyISAM表锁定一起,它为INSERT查询提供了巨大的查询时间。可能这就是为什么@Oswald在评论中无法再现这种情况。
这里真正的问题是,MySQL不会在触发器内部记录查询,并且在分析应用程序时总是必须记住它们。
感谢您的帮助,每个人都接受接近解决方案的答案。
重新启动MySQL服务器的帮助吗? – 2011-01-09 18:29:00
可能是因为你的唯一索引。但它不应该这么慢。 – alexn 2011-01-09 18:29:24