gpt4 book ai didi

mysql - 为什么这个查询这么慢?

转载 作者:行者123 更新时间:2023-11-29 05:43:29 26 4
gpt4 key购买 nike

这条查询出现在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 需要这么长时间?

更新

我发现,所有麻烦的原因是什么。在该表上创建了一个非常重的“ON INSERT”触发器。与 MyISAM 表锁定一起,它为 INSERT 查询提供了巨大的查询时间。可能这就是为什么评论中的@Oswald 无法重现这种情况。

这里真正的问题是 MySQL 不会记录触发器内部的查询,您在分析应用程序时必须始终记住它们。

谢谢大家的帮助,接受接近解决方案的答案。

最佳答案

我怀疑缓慢的不是查询本身,而是您在锁定表的服务器上运行其他查询。 MyISAM 使用表级锁定,因此需要给定表的查询将锁定需要该表的所有其他查询,即使它们涉及不同的行。例如,如果您经常有长时间运行的 SELECT 查询,您的 INSERT、UPDATE 和 DELETE 查询将无法执行,直到您发出查询时正在运行的所有选择都完成。

如果您在插入运行时从另一个提示中输入 SHOW PROCESSLIST,您可能会看到它处于“锁定”状态。如果结果是另一种状态,并且没有长时间运行的选择阻止它,您应该发布它,因为这也有助于缩小问题范围。

关于mysql - 为什么这个查询这么慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4640918/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com