Простой запрос MySQL UPDATE - очень низкая производительность - PullRequest
0 голосов
/ 15 февраля 2012

Простой запрос на обновление 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, который имеет 3 Гб ОЗУ и 4 процессора по 2 ГБ каждый. При высоком трафике в секунду не более 6-7 запросов такого типа в секунду, но запрос медленный не только тогда.

1 Ответ

0 голосов
/ 15 февраля 2012

Во-первых, попробуйте перестроить ваши индексы, может случиться так, что запрос их не использует (вы можете увидеть, что с помощью оператора EXPLAIN с вашим запросом на обновление).

Другая возможность состоит в том, что у вас есть много выборок в этой таблице или длительные выборочные выборки, что вызывает длительные блокировки. Вы можете попробовать использовать репликацию, и ваши запросы select будут выполняться только для подчиненной базы данных, а обновления - только для master. Таким образом, вы избежите блокировок таблиц, вызванных обновлениями, в то время как вы делаете выбор и наоборот.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...