SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 23.10.2020 12:41:34

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 834

waiting for handler commit после перехода на MySQL 8.0

Обновили MySQL сервер с версии 5.7 на 8.0.22 и столкнулись с неожиданной проблемой.

Есть простенькая табличка с тремя столбцами:

CREATE TABLE `prices` (
  `id` int unsigned NOT NULL,
  `price_regular` decimal(7,0) NOT NULL,
  `discount` decimal(2,0) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM


К ней время от времени делаются простые запросы на вставку вида

INSERT INTO prices SET
  `id` = '51514',
  `price_regular` = '5990',
  `discount` = '0'
ON DUPLICATE KEY UPDATE
  `price_regular` = '5990',
  `discount` = '0'


В табличке порядка 5000 строк. На каждую строку делается свой запрос. Раньше они выполнялись за какое-то адекватное время порядка секунды.
После обновления запросы стали тупить, показывая в SHOW PROCESSLIST статус "waiting for handler commit", и все вместе теперь выполняются 10 минут и больше. При этом постоянно слышен хруст жесткого диска (на одной из машин, где тестировали, есть обычный HDD), который не прекращается на всём протяжении запроса.

Никакие настройки, связанные с размерами буферов и прочего, при обновлении не меняли. Чем не угодила новому серверу простая MyISAM-овская табличка - непонятно sad

У кого-нибудь есть идеи?

Неактивен

 

#2 23.10.2020 14:17:55

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5719

Re: waiting for handler commit после перехода на MySQL 8.0

waiting for handler commit означает, что процесс висит в стадии фиксации транзакции

По умолчанию в 8-ке включены бинарные логи. Были ли они включены в 5.7? Если нет, то исчезнет ли проблема при их отключении?

Неактивен

 

#3 23.10.2020 14:58:30

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 834

Re: waiting for handler commit после перехода на MySQL 8.0

А как может быть транзакция, если таблица MyISAM?

Неактивен

 

#4 23.10.2020 19:54:00

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5719

Re: waiting for handler commit после перехода на MySQL 8.0

Ключевое слово не транзакция. Иными словами процесс зависает при фиксации изменений.

В чем может быть отличие в процессе записи между 5.7 и 8? Как вариант, неявно включенные бин логи.

Неактивен

 

#5 24.10.2020 11:54:36

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3856

Re: waiting for handler commit после перехода на MySQL 8.0

Попробуй

innodb_flush_log_at_trx_commit = 0

Неактивен

 

#6 26.10.2020 15:02:48

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 834

Re: waiting for handler commit после перехода на MySQL 8.0

Значение innodb_flush_log_at_trx_commit влияния не оказало.

Зато действительно помогла настройка skip_log_bin = 1. С ней всё становится быстро, как раньше. При этом на предыдущей версии сервера bin log был включен.

Интересно, почему при включенном журнале нельзя нормально писать в таблицу yikes
(Пробовал, кстати, поменять ENGINE на InnoDB - без разницы.)

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson