SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 25.06.2023 08:55:32

grey109
Участник
Зарегистрирован: 17.12.2010
Сообщений: 9

Mysql постоянно что-то пишет в ibtmp1

Приветствую всех!

Есть сервер под управлением Windows 2012 и установленным Mysql 5.7.38. Заметил такую вещь, что mysqld.exe постоянно что-то пишет в файл ibtmp1 со скоростью 6-12Мб/сек. За пару лет на ssd-винт он переписал почти 120Тб информации. Идет именно постоянная запись, чтения этого файла вообще не происходит судя по встроенному монитору Windows. Это больше похоже на какой-то глюк Mysql, т.е. запись идет даже при остановленному php/nginx - т.е. сайт тут не при чем.

Подскажите, как это исправить?

Неактивен

 

#2 25.06.2023 14:52:44

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2420

Re: Mysql постоянно что-то пишет в ibtmp1

Откровенно говоря, такого ранее не попадалось. Пробовали обновить mysql?
И еще вопрос - при остановленном php/nginx - какие-то запросы вообще идут? show full processlist что-то показывает?


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 25.06.2023 18:42:04

grey109
Участник
Зарегистрирован: 17.12.2010
Сообщений: 9

Re: Mysql постоянно что-то пишет в ibtmp1

Да, обновил с 36 на 38 версию, но это ничего не дало.

mysql> show full processlist;
+-----+------+----------------+------+---------+------+----------+-----------------------+
| Id  | User | Host           | db   | Command | Time | State    | Info                  |
+-----+------+----------------+------+---------+------+----------+-----------------------+
| 143 | root | localhost:3374 | NULL | Query   |    0 | starting | show full processlist |
+-----+------+----------------+------+---------+------+----------+-----------------------+
1 row in set (0.00 sec)

Неактивен

 

#4 26.06.2023 00:03:58

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Mysql постоянно что-то пишет в ibtmp1

А можете показать настройки базы? Ну и очень интересно, как вы определили, что пишет в этот файл — я такое не умею находить sad

Неактивен

 

#5 26.06.2023 09:31:04

grey109
Участник
Зарегистрирован: 17.12.2010
Сообщений: 9

Re: Mysql постоянно что-то пишет в ibtmp1

Вам содержимое файла my.ini показать? Определи очень просто, сначала глянул СМАРТ винта и удивился: с винта должно быть много чтений и мало записей, а у меня ситуация прямо противоположная с огромным перекосом в сторону количества записанных Тб. Открыл диспетчер задач, посмотрел что идет нагрузка на винт, открыл монитор ресурсов и все как на ладони.

https://imageup.ru/img147/thumb/bezymiannyi4399995.jpg

Неактивен

 

#6 26.06.2023 22:00:52

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Mysql постоянно что-то пишет в ibtmp1

Очень странно. И это происходит без нагрузки на сервер?
Просто этот файл используется только для временных запросов, и не должен писаться без нагрузки.

Как костыль могу предложить задать в конфиге default_tmp_storage_engine=MyISAM. Это позволит увидеть, создаются ли реально временные таблицы. Но запросы все равно в show processlist должны быть видны.

Неактивен

 

#7 27.06.2023 01:53:52

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2420

Re: Mysql постоянно что-то пишет в ibtmp1

Я еще предложил бы включить лог ВСЕХ запросов на какое-то время (при выключенном nginx) и посмотреть на него. То, что в отдельно взятый момент времени Show Full Processlist ничего не показывает - не означает, что в другое время оно также.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#8 28.06.2023 14:30:06

grey109
Участник
Зарегистрирован: 17.12.2010
Сообщений: 9

Re: Mysql постоянно что-то пишет в ibtmp1

Была возможность поэкспериментировать. Вот что я выяснил:

1. Если остановить веб-сервер, то нагрузка на винт за пару минут падает до 0. Видимо монитор ресурсов показывает обращения к диску не в реальном времени, а некоторое среднее значение за минуту-две.

2. default_tmp_storage_engine=MyISAM добавил, но где посмотреть создаются или нет временные таблицы я не знаю. Подскажите, где это посмотреть?

3. Лог полных запросов включил, соответственно когда nginx выключаю в нем ничего нового не появляется.

Итог получается такой, что небольшой и относительно легкий сайт создает большую нагрузку на дисковую систему. Вся БД (в формате MyISAM) сайта занимает порядка 250-300Мб, индексы используются, запросы оптимизированы и тем не менее получается что при работу с базой данных создаются временные таблицы. Очень странно...

Отредактированно grey109 (28.06.2023 14:30:52)

Неактивен

 

#9 28.06.2023 14:57:09

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Mysql постоянно что-то пишет в ibtmp1

1. Если запросы падают до нуля, то это нормально. Ibtmp используется для работы временных запросов. Если монитор запаздывает на минуты, то тогда это всё объясняет (сняли нагрузку, старые запросы доработали, новые не появились, нагрузка ушла).

2. В том же мониторе ресурсов: новые временные данные должны создаваться в файликах MYI, а не в ibtmp.

3. Хорошо, значит, никакой дополнительной нагрузки нету.

Про то, почему вообще используются временные таблицы, — надо смотреть на запросы. Проще всего сделать slow query log и поанализировать его (pt-query-digest, например). И для медленных запросов понять, почему бегает по диску. Как правило, бегает по диску тогда, когда запрос написан плохо. Например, выбирает данные в память и там сортирует, при этом размер этих данных больше tmp_table_size.

Неактивен

 

Board footer

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