Рейтинг:0

Как уменьшить количество операций записи на диск MySQL/InnoDB

флаг gb

Я провожу стресс-тестирование приложения, использующего MySQL. Узким местом являются диски MySQL (отдельные для основных данных и журнала повторов), на которые записывается довольно много. на вершине указывает на то, что их использование близко к 100%. Если я отключу журналы повторов (ИЗМЕНИТЬ ЭКЗЕМПЛЯР ОТКЛЮЧИТЬ INNODB REDO_LOG), то использование диска становится незначительным (2% для основного диска и ноль — естественно — для диска журнала повторов).

Мне нужно уменьшить использование диска (это не должно быть незначительным, но оно должно быть значительно меньше), не отключая журналы повторов. В случае сбоя можно потерять несколько секунд (даже минут) данных. Я пробовал это:

innodb_flush_method = O_DSYNC
innodb_flush_log_at_trx_commit = 0
innodb_flush_log_at_timeout = 5

но я не вижу никакой разницы.

Есть ли что-нибудь еще, что я могу сделать?

Это MySQL 8.0.29 на Ubuntu 20.04.

(Примечание: это приложение Nextcloud, и, по-видимому, оно делает много запросов на запись в базу данных.)

Wilson Hauck avatar
флаг jp
Есть еще GV, которые нужно изменить, чтобы уменьшить частоту записи. Запрос дополнительной информации, пожалуйста. Размер оперативной памяти, количество ядер, какие-либо устройства SSD или NVME на хост-сервере MySQL? Опубликуйте на pastebin.com и поделитесь ссылками. Из вашего корня входа SSH, текстовые результаты: A) ВЫБРАТЬ COUNT(*) FROM information_schema.tables; B) ПОКАЗАТЬ ГЛОБАЛЬНЫЙ СТАТУС; минимум через 24 часа UPTIME C) ПОКАЗАТЬ ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ; D) ПОКАЗАТЬ ПОЛНЫЙ СПИСОК ПРОЦЕССОВ; д) СТАТУС; не ПОКАЗАТЬ СТАТУС, просто СТАТУС; для анализа настройки рабочей нагрузки сервера, чтобы предоставить предложения.
Wilson Hauck avatar
флаг jp
У какого партнера Nextcloud вы размещаетесь?
флаг ua
Мы можем объяснить использование диска для конкретных запросов. Кроме того, если «стресс-тесты» не соответствуют вашему приложению, выводы из них могут ввести в заблуждение.
djdomi avatar
флаг za
Я бы посоветовал вам задать вопрос dba imho
Рейтинг:1
флаг gb

Я понял, что это больше проблема Nextcloud, чем проблема MySQL.

Изучив Innodb_os_log_writing часть ПОКАЗАТЬ ГЛОБАЛЬНЫЙ СТАТУС, я убедился, что он записывает 1 МБ/с или больше в журналы повторов. Очевидно, проблему на моем медленном диске вызывал сам объем данных, а не детали того, когда и как они синхронизировались.

Установив general_log = 'ВКЛ' и изучив запросы, я понял, в конце концов, что это был Ошибка Nextcloud, где вход в систему вызывает слишком много запросов.После обходного пути усечения oc_authtoken таблице, скорость записи в журналы повторного выполнения упала менее чем в десять раз по сравнению с тем, что было раньше.

Wilson Hauck avatar
флаг jp
Отлично, открытие и корректирующие действия. Следующим шагом будет предоставление дополнительной информации, запрошенной 31 мая 2022 г. в 15:22, чтобы можно было проанализировать рабочую нагрузку, и некоторые предложения по снижению активности чтения/записи будут опубликованы в качестве ответа.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.