我遇到此更新查询的问题。我不明白为什么“结束”状态需要这么长时间。
奇怪的是,只有在我没有更新表一段时间之后才会发生这种情况,但是在我这样做之后,更新查询非常快。
我不在乎一个更新查询是否需要很长时间才能完成,但是此查询会暂停服务器中的所有其他查询(select / insert / update ..),因此所有这些查询都必须等到此更新完成。
我通过其他讨论阅读了很多内容,但所有这些都是关于“查询结束”而不是“结束”状态。
这是我最近的查询耗时超过70秒:
UPDATE optimizer_disabled_domains
SET dateChanged = NOW( ) ,
bgProcessID =18,
profile = '1. Default',
creativeIDs = '',
excludeCreativeIDs = '',
emailGroupIDs = '1',
emailDomains = '',
status =1
WHERE id =237
分析统计信息:
starting => 0.000053
checking permissions => 0.000010
Opening tables => 0.000029
System lock => 0.000010
init => 0.000042
Updating => 0.000106
end => 0.000009
Waiting for query cache lock => 0.000007
*** end => 69.276521 ***
query end => 0.000203
closing tables => 0.000098
freeing items => 0.000082
logging slow query => 0.000035
logging slow query => 0.000063
cleaning up => 0.000033
表格结构:
CREATE TABLE IF NOT EXISTS `optimizer_disabled_domains` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`dateCreated` datetime NOT NULL,
`dateChanged` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`bgProcessID` int(11) NOT NULL,
`profile` varchar(100) NOT NULL DEFAULT '',
`creativeIDs` varchar(255) NOT NULL DEFAULT '',
`excludeCreativeIDs` varchar(255) NOT NULL DEFAULT '',
`emailGroupIDs` varchar(30) NOT NULL DEFAULT '',
`emailDomains` varchar(1000) NOT NULL DEFAULT '',
`status` tinyint(1) NOT NULL DEFAULT '1',
PRIMARY KEY (`id`),
KEY `status` (`status`,`bgProcessID`,`profile`,`creativeIDs`,`excludeCreativeIDs`,`emailDomains`(255),`emailGroupIDs`)
) ENGINE=InnoDB
答案 0 :(得分:0)
可能是DNS问题。在mysql配置中添加此行并重新启动
skip-name-resolve
同时检查查询缓存,如果它太大,您可能会看到一个非常大的缓存的锁争用问题。Link
SHOW VARIABLES LIKE 'query_cache_size';