После запроса занимает очень много времени, хотя он должен выполнить немедленно:Простой 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 в ОЗУ, чтобы ускорить запросы, но это тоже не помогло.
Я обнаружил, что если я НАРУШИТЬ таблицу, проблема временно исчезнет, но снова она вернется через некоторое время.
Любая помощь приветствуется.
Есть ли что-нибудь еще, работающее с базой данных в одно и то же время? Возможно, вы столкнулись с проблемой блокировки, когда какой-то другой запрос заблокировал указанную строку. –