一个简单的mysql更新查询有时会非常慢。下面是查询:
update produse
set vizite = '135'
where id = '71238'我的简化表结构是:
CREATE TABLE IF NOT EXISTS `produse`
(
`id` int(9) NOT NULL auto_increment,
`nume` varchar(255) NOT NULL,
`vizite` int(9) NOT NULL default '1',
PRIMARY KEY (`id`),
KEY `vizite` (`vizite`),
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=945179 ;我使用的是MySQL 5.0.77,表是MyISAM。
该表约为752.6个月,目前有642,442个。
数据库在专用VPS上运行,该VPS具有3 3Gb和4个2G处理器。当我们有高流量时,每秒不超过6-7个这种类型的查询,但查询速度不仅很慢。
发布于 2012-02-16 02:23:39
首先,尝试重新构建索引,可能发生的情况是查询没有使用它们(您可以看到在update查询中使用EXPLAIN语句)。
另一种可能性是,您在该表上有许多selects或长时间运行的selects,这会导致长锁。您可以尝试使用复制,并仅在从数据库上执行select查询,仅在主数据库上执行更新。这样,您就可以在执行selects操作时避免由更新引起的表锁,反之亦然。
https://stackoverflow.com/questions/9298956
复制相似问题