У меня есть простой запрос, который обычно выполняется в течение 0,0002 секунд.Иногда (например, 1 из 200) выполнение запроса может занять до 1000 раз.
Медленный журнал запросов:
# Time: 111205 12:21:21
# User@Host: abc[abc] @ localhost []
# Query_time: 0.120205 Lock_time: 0.000025 Rows_sent: 0 Rows_examined: 1
SET timestamp=1323084081;
UPDATE `users`
SET `online`=NOW(),
lastip='123.123.123.123',
pageviews = pageviews + '1',
onlinetoday = '1'
WHERE `user_name`='Alex'
LIMIT 1;
Поле user_name
проиндексировано.Обновленные поля (online
, lastip
, pageviews
и onlinetoday
) не являются.
Та же проблема возникает при использовании первичного ключа (A_I, int(35)
) вместоuser_name (varchar(50)
.
Таблица содержит 22 000 строк и 68 полей, 5 из них являются индексами.
У меня также есть другая таблица, которая точно такая жепроблема:
CREATE TABLE `person_values` (
`id` int(255) NOT NULL,
`A1` int(255) NOT NULL DEFAULT '0',
`A2` int(255) NOT NULL DEFAULT '0',
`A3` int(255) NOT NULL DEFAULT '0',
`A4` int(255) NOT NULL DEFAULT '0',
`A5` int(255) NOT NULL DEFAULT '0',
`A6` int(255) NOT NULL DEFAULT '0',
`A7` int(255) NOT NULL DEFAULT '0',
`A8` int(255) NOT NULL DEFAULT '0',
`A9` int(255) NOT NULL DEFAULT '0',
`A10` int(255) NOT NULL DEFAULT '0',
`A11` int(255) NOT NULL DEFAULT '0',
`A12` int(255) NOT NULL DEFAULT '0',
`A13` int(255) NOT NULL DEFAULT '0',
`A14` int(255) NOT NULL DEFAULT '0',
`A15` int(255) NOT NULL DEFAULT '0',
`A16` int(255) NOT NULL DEFAULT '0',
`A17` int(255) NOT NULL DEFAULT '0',
`A18` int(255) NOT NULL DEFAULT '0',
`A19` int(255) NOT NULL DEFAULT '0',
`A20` int(255) NOT NULL DEFAULT '0',
`A21` int(255) NOT NULL DEFAULT '0',
`A22` int(255) NOT NULL DEFAULT '0',
`A23` int(255) NOT NULL DEFAULT '0',
`A24` int(255) NOT NULL DEFAULT '0',
`A25` int(255) NOT NULL DEFAULT '0',
`A26` int(255) NOT NULL DEFAULT '0',
`A27` int(255) NOT NULL DEFAULT '0',
`A28` int(255) NOT NULL DEFAULT '0',
UNIQUE KEY `person` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
Запрос:
UPDATE `person_values` SET A25 = A25 + 1 WHERE id = '1' LIMIT 1;
Таблица person_values
содержит около 28 000 строк.
Версия сервера Mysql: 5.1.49-3-log Mysqlверсия клиента: 5.1.49 Distro: Debian 6.0.3
Что может быть причиной этой проблемы?