gpt4 book ai didi

mysql - 为什么这个简单的 MySQL 更新查询会花费这么长时间?

转载 作者:行者123 更新时间:2023-11-30 22:55:34 26 4
gpt4 key购买 nike

在过去的几个月里,我的主机一直给我发消息说我的网站使用了太多的 MySQL 分钟数。他们还会发送一些日志,显示哪些查询有时会占用最多的时间。有些查询有点长而且复杂,所以我理解为什么它们会成为问题。但有一些让我摸不着头脑。接下来我要重点说的是:

UPDATE parentmessages SET views=views+1 WHERE parentid='11308'

数字只是一个例子,它可以是任何parentid。 parentmessages 表有 parentid 作为主键,所以我认为它会被索引并且很容易找到。表中大约有 11,000 条记录,实际上并没有那么多。以下是我的主机给我的数字,说明这个查询昨天处理了 6 个实例多长时间:

耗时 0.126455 , 1.472929 , 1.638743 , 3.040538 , 7.130041 , 112.498037 秒完成

我想 112 可能是随机故障,但为什么有时需要 3、7 秒?!我最好的选择是因为我在表上有很多索引,但我对 MySQL 的了解还不够,不知道这是否重要。为什么有时是 1/10 秒,有时是很多秒?

这里是显示创建表:

    CREATE TABLE `parentmessages` (
`parentid` int(7) NOT NULL AUTO_INCREMENT,
`active` tinyint(1) NOT NULL,
`level` int(2) NOT NULL,
`type` varchar(10) NOT NULL,
`hidden` tinyint(1) DEFAULT NULL,
`sticky` tinyint(1) NOT NULL,
`poll` tinyint(1) NOT NULL,
`topic` varchar(120) DEFAULT NULL,
`message` varchar(30000) NOT NULL,
`views` int(6) NOT NULL,
`replies` int(5) NOT NULL,
`userid` int(7) NOT NULL,
`datetimecalc` int(11) NOT NULL,
`lastreplycalc` int(11) NOT NULL,
`lastreplyuser` int(7) NOT NULL,
`editedcalc` int(11) DEFAULT NULL,
`editeduser` int(7) DEFAULT NULL,
`realediteduser` int(7) DEFAULT NULL,
`altint` int(7) DEFAULT NULL,
`imageurl` varchar(125) DEFAULT NULL,
`locked` tinyint(1) NOT NULL,
`tempid` int(12) NOT NULL,
PRIMARY KEY (`parentid`),
KEY `useridindex` (`userid`),
KEY `datetimecalcindex` (`datetimecalc`),
KEY `activeindex` (`active`),
KEY `lastreplycalcindex` (`lastreplycalc`),
KEY `levelindex` (`level`),
KEY `stickyindex` (`sticky`)
) ENGINE=MyISAM AUTO_INCREMENT=11716 DEFAULT CHARSET=latin1

最佳答案

一个原因可能是另一个慢速查询阻塞了表,而您的更新只是在等待另一个查询完成。

关于mysql - 为什么这个简单的 MySQL 更新查询会花费这么长时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26540167/

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