Есть запрос: UPDATE
settings
SET
vals = ABS(vals) + 1
WHERE
name = 'somename'
где name — varchar(30) latin1_bin, vals — int(10).
Таблица InnoDB.
Хостинг 1Gb VDS-1024 CentOS.
В таблице до 30 записей.
Запрос выполняется от 0,003 до 10 секунд.
С админом переломали уже себе все ноги, испробовали всевозможные тесты, рекомендующие конфиги с лучшими настройками и т.п.
Вопрос — куда смотреть?
На локальных машинах таких тормозов не бывает никогда.
1. Мускл-сервер загружен? На пустом мускл-сервере история повторяется?
Может у мускла кончается кеш, он достаём ваши 30 записей с диска, который и так перегружен.
2. Триггеры, вызывающиеся по данному запросу, что-то делают?
— Скопируйте всю вашу таблицу в temporary table и повыполняйте Ваш update с ней. Это исключит диск.
— Меряете время где? В клиентском скрипте? Попробуйте запустить его на машине с мусклом (пусть хостер сам запустит, если Вас не пускает на машину с мусклом).
Вполне типично для VPS.
Вместо того чтобы тратить время на случайные флуктуации, собирайте статистику за день и ищите наиболее тормозящие запросы программой mysqlsla.
Конечно, 10 секунд это многовато, но у хостеров свое мнение.
На 1gb имхо можно на VPS использовать внешний MySQL сервер хостинга. Работает он быстро, рекомендую использовать именно его.
Пробовал, ситуация иногда также повторяется.
А может тогда дело не в MySQL-сервере. Вы писали, что на локальной машине проблем нет.
Вы выполняете запросы из консоли MySQL или используете какую-либо бибилиотеку (libmysql, pdo)?