#mysql
Вопрос:
У меня проблема с базой данных MySQL.
Начало проблемы происходит на сервере с очень высокими характеристиками 80 ядер и 200 ГБ оперативной памяти ( Ubuntu с системой управления серверами).
Детали проблемы заключаются в следующем:
- У нас есть таблица, содержащая около 100 000 записей,
- В нормальной ситуации, и когда у меня нет давления на сервер, все операции проходят очень нормально.
- Но иногда на сервере 4000 пользователей, и мы выполняем любые операции вставки, обновления, удаления, в частности, оператор Insert может занять 2 ядра от центрального процессора. И в эти времена, когда сервер находится в движении и есть пользователи, работающие онлайн (речь идет о потреблении 13% возможностей сервера.
- Но в это время, если вы выполняете процесс вставки, он достигает 700%, и иногда после двух вставок, например, происходит зависание службы Mysqld, выглядит как мертвая блокировка и решается только путем перезапуска mysqld несколько раз.
- Таблица содержит только 2 индекса,
- И информация, хранящаяся в нем, — это просто информация, такая как имя, описание, ссылка и тому подобное.
- Обратите внимание, что есть еще одна таблица с примерно 3 миллионами записей, поэтому этой проблемы никогда не возникнет.
Конечно, проблема не в коде, потому что, когда я выполнил процесс вручную из базы данных, проблема проявилась четко.
Я не знаю, каковы причины, которые могли бы стать причиной возникновения такой проблемы.
Это конфигурации базы данных my.cnf:
#innodb_flush_log_at_trx_commit = 2
#innodb_log_file_size = 250M
#innodb_log_buffer_size = 10M
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50
max_connections = 1000
wait_timeout = 30
#query_cache_size=64M
#query_cache_limit=64M
#tmp_table_size=400M
key_buffer_size = 2G
slow_query_log=1
slow_query_log_file=/var/lib/mysql/slowquery.log
long_query_time=5
log_queries_not_using_indexes = ON
Комментарии:
1. вы можете получить лучшие результаты, задавая вопросы dba.stackexchange.com или serverfault.com. вы используете только службу mysql на этом сервере? если нет, подумайте о том, чтобы сделать это. пожалуйста, отредактируйте свой вопрос, чтобы показать вывод
select version();
иshow create table yourtablename;
2. братан, просто используй mongodb xd, похоже, у тебя много запросов
3. Смотрите Советы о том, что следует включать в вопросы производительности. размер key_buffer_size 2G делает его похожим на таблицы myisam. Если у вас есть таблицы innodb, то у вас должен быть параметр innodb_buffer_pool_size= 30 Г (предположим, за пределами значения по умолчанию). Необходимо просмотреть медленный журнал запросов.
log_queries_not_using_indexes
может вызвать чрезмерный шум. Отключите пока. Включите общие запросы вместе сexplain {query}
. В основном это выглядит как проблема с индексированием.