2012-04-07 3 views
2

После запроса занимает очень много времени, хотя он должен выполнить немедленно:Простой MySql запрос на обновление очень медленно

mysql> UPDATE articles SET description='test' WHERE article_id=6; 
Query OK, 1 row affected (40.80 sec) 
Rows matched: 1 Changed: 1 Warnings: 0 
  • article_id является INT Autoincrement
  • таблица имеет только около 1000 записей

Я пробовал профилировать запрос, вы можете видеть, что он быстро выполняет обновление, но потом он зависает по какой-то причине:

mysql> SHOW PROFILE FOR QUERY 1; 
+----------------------+-----------+ 
| Status    | Duration | 
+----------------------+-----------+ 
| starting    | 0.000079 | 
| checking permissions | 0.000016 | 
| Opening tables  | 0.000020 | 
| System lock   | 0.000011 | 
| Table lock   | 0.000864 | 
| init     | 0.000078 | 
| Updating    | 0.000315 | 
| end     | 40.798736 | 
| query end   | 0.000028 | 
| freeing items  | 0.000014 | 
| closing tables  | 0.000012 | 
| logging slow query | 0.000010 | 
| logging slow query | 0.000046 | 
| cleaning up   | 0.000012 | 
+----------------------+-----------+ 
14 rows in set (0.00 sec) 

Я попытался установить каталог tmp в ОЗУ, чтобы ускорить запросы, но это тоже не помогло.

Я обнаружил, что если я НАРУШИТЬ таблицу, проблема временно исчезнет, ​​но снова она вернется через некоторое время.

Любая помощь приветствуется.

+0

Есть ли что-нибудь еще, работающее с базой данных в одно и то же время? Возможно, вы столкнулись с проблемой блокировки, когда какой-то другой запрос заблокировал указанную строку. –

ответ

0

Если это таблица MyISAM, вы можете ее исправить. У меня было это явление с поврежденными файлами данных.

+0

Да, это MyISAM. Я много раз пытался РЕМОНТ, ОПТИМИЗИРОВАТЬ И ФЛЕШ. Только FLUSH исправляет проблему, но даже это временно. На следующий день проблема вернулась. Следует также упомянуть, что это кластер одного ведущего и одного подчиненного сервера, не уверен, что он имеет какое-либо отношение к проблеме. – Striker

1

Устранено - размер кеша mysql слишком велик. Понижение его размера устранило проблему.

+0

Что такое хороший размер для кеша? – alimack

Смежные вопросы