При записи, удалении или изменении таблиц mysql, СУБД выполняет блокировку таблицы, чтобы не повредить данные. Если блокировки выполняются долго – то это проблема. Т.е. запросы на изменения данных будут происходить дооолго.
Для того, чтобы посмотреть, были ли задержки при выполнении блокировок,нужно выполнить такой запрос:
mysql> show status like 'Table_locks_%';
+-----------------------+---------+
| Variable_name | Value |
+-----------------------+---------+
| Table_locks_immediate | 2473395 |
| Table_locks_waited | 459 |
+-----------------------+---------+
Если Table_locks_waited очень большое, то нужно что-то делать. Как вариант, если используется MyISAM, переходить на InnoDB. MyISAM блокирует изменяемую таблицу целиком, а InnoDB блокирует только изменяемую строку, а не таблицу целиком, что намного эффективнее при большой интенсивности изменений в базе.
https://mysyslog.ru/posts/164
Просмотров: 894