После перехода на innoDB странные глюки

Переключил тип хранилища одной из таблиц с myisam на innodb.
Часа 3 на нагружаемом проекте проработало почти без проблем (слишком долго выполнялись селекты даже по примари ключам).
Сейчас замечаю что список запросов в ожидании начал разрастаться нереальными темпами.

32899786 | user | 127.0.0.1:48798 | table | Query | 1296 | Sending data | select id from site_users

Как такой запрос может выполняться 1296 секунд?
Что я делаю не так?

Причина перехода на innodb банальна, слишком много апдейтов по таблице.
  • Вопрос задан
  • 4412 просмотров
Пригласить эксперта
Ответы на вопрос 4
opium
@opium
Просто люблю качественно работать
select id from site_users
если у вас 10 миллиардов id то почему он должен быстро выполняться то?
К тому же не уверен что мускул умеет брать данные из индекса и сильно не уверен, что взять данные из индекса быстрее чем просто из таблицы.
Ответ написан
rakot
@rakot
Причина скорее всего кроется в дедлоках. Какие то запросы на Update намертво залочили пару записей из site_users, а так как вы тянете их все, то запрос ждёт когда они разблокируются. Судя по гуглу проблема существует, можно погуглить «mysql deadlock sending data».

Могу порекомендовать перейти на Percona, там вроде как больше внимания уделяют этой проблеме.
Ответ написан
lybin
@lybin
looking for remote full time job python backend
innodb натюнена в конфигах мускула? С настройками по умолчанию на хайлоаде она тупит.
Есть много манов, в том числе и на русском:
goo.gl/VrA1R
Ответ написан
@fred
Это время показывает сколько _реально_ времени выполнялся запрос, включая ожидание блокировок, а не чистое время на запрос. Если залочить таблицу а в другом коннекте сделать update одной строки, он может и 100 лет выполняться, по этому счетчику
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы