简单的MySQL UPDATE查询 - 性能非常低

时间:2012-02-15 18:17:34

标签: mysql performance

有时,一个简单的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 MO,目前有642,442。

数据库在专用VPS上运行,该VPS具有3Gb RAM和4个2G处理器。当我们有高流量时,每秒不超过6-7个查询类型,但查询速度慢,不仅如此。

1 个答案:

答案 0 :(得分:0)

首先,尝试重建索引,可能会发生查询未使用它们(您可以看到使用EXPLAIN语句和更新查询)。

另一种可能性是您在该表上有很多选择或长时间运行选择,这会导致长锁定。您可以尝试使用复制,仅在slave数据库上执行select查询,并且仅在master上执行更新。这样,在进行选择时,您将避免由更新引起的表锁定,反之亦然。