MySQL InnoDB зависает при ожидании блокировок на уровне таблицы

У меня есть большое производственное веб-приложение (Glassfish 3.1 + MySQL 5.5). Все таблицы InnoDB. Раз в несколько дней приложение полностью зависает. SHOW FULL PROCESSLIST показывает множество простых запросов вставки или обновления в разных таблицах, но все они имеют статус

Ожидание блокировки уровня таблицы

Примеры:

update user
set user.hasnewmessages = NAME_CONST('in_flag',_binary'\0' COLLATE 'binary') where user.id = NAME_CONST('in_uid',66381) insert into exchanges_itempacks set packid = NAME_CONST('in_packId',332149), type = NAME_CONST('in_type',1), itemid = NAME_CONST('in_itemId',23710872)

Запросы с самым длинным «Time» ожидают блокировка на уровне таблицы тоже. Пожалуйста, помогите разобраться, почему MySQL пытается получить блокировку уровня и что может блокировать все эти таблицы. Во всех статьях о блокировке InnoDB говорится, что этот движок не использует блокировку таблиц, если вы не заставляете его делать это.

В моем my.cnf указано следующее:

innodb_flush_log_at_trx_commit = 0
innodb_support_xa = 0
innodb_locks_unsafe_for_binlog = 1
innodb_autoinc_lock_mode=2

Двоичный журнал отключен. У меня вообще нет "LOCK TABLES" или других явных команд блокировки. Транзакции: READ_UNCOMMITED .

Вывод SHOW ENGINE INNODB STATUS : http://avatar-studio.ru:8080/ph/imonout.txt

10
задан Machavity 26 February 2016 в 15:43
поделиться