Просто чтобы получить некоторую перспективу извлечения вашего конфигурационного файла, я сделал сравнение со значением по умолчанию ( 1, 2 ). Обозначение будет иметь параметр, за которым следует ваше значение и значение по умолчанию в скобках.
key_buffer_size = 128M (8M) max_allowed_packet = 5M (4M) table_open_cache = 256 (2000) sort_buffer_size = 10M (2M) read_buffer_size = 20M (1M) read_rnd_buffer_size = 10M (2M) myisam_sort_buffer_size = 64M (8M) thread_cache_size = 8 (-1) query_cache_size= 30M (0/1M) thread_concurrency = 8 (10) bulk_insert_buffer_size = 256 (8M) innodb_buffer_pool_size = 5G (128M) innodb_additional_mem_pool_size = 1G (8M) innodb_log_buffer_size = 1G (8M) innodb_log_file_size = 1G (5M) innodb_file_per_table = 1 (Off/On)
Как мы видим, вы значительно увеличили большинство кешей. Но имеет ли это смысл? Вы сказали, что ваша БД использует движок InnoDB. Согласно вышеуказанной документации key_buffer_size
, read_buffer_size
, bulk_insert_buffer_size
относится только к базам данных MyISAM. Я не уверен, когда временные пробелы будут работать на этом.
Использование myisam_sort_buffer_size
кажется задом наперед, особенно если в документации говорится: The size of the buffer that is allocated when sorting MyISAM indexes during a REPAIR TABLE or when creating indexes with CREATE INDEX or ALTER TABLE.
так что в большинстве нормальных случаев использования оно будет использоваться редко.
Кроме того, вы используете следующие настройки, которые, кажется, в значительной степени зависят от вашей БД схемы использования max_allowed_packet
, table_open_cache
, thread_cache_size
,innodb_log_buffer_size
но вы ничего о модели использования не говорите. Поэтому рассмотрите приведенную выше документацию, чтобы взглянуть на то, что они на самом деле делают, и сравнить их с моделью использования БД.
Остерегайтесь этого sort_buffer_size
и read_rnd_buffer_size
зарезервировано для каждой сессии. Некоторые параметры MyISAM могут быть такими же, так что вы действительно получаете немало накладных расходов для каждого сеанса. Опять же, вам нужно оценить фактическую модель использования.
Теперь о настройках InnoDB, которые вы указали. innodb_additional_mem_pool_size
устарела. Непонятно, почему вы изменили innodb_log_file_size
, innodb_file_per_table
не знаю, в чем причина вашего изменения. Последний может быть просто по умолчанию On
? Установив оставшуюся настройку innodb_buffer_pool_size
на такое высокое значение, вы можете также рассмотреть возможность использования innodb_buffer_pool_instances
.
В целом похоже, что вы только что попробовали что-то, и это не сработало. Согласно вашим комментариям, вы даже не заглядывали в файлы журналов MySQL, чтобы выяснить, что отвечает за службу, которая не принимает подключения или вообще не устанавливает соединение. Если вы действительно хотите оптимизировать производительность БД, вам придется это сделать. Подумайте об использовании дополнительных индексов для таблиц, где это целесообразно, чтобы повысить производительность запросов и посмотреть, какие запросы фактически выполняются в БД. Кроме того, постарайтесь получить представление о том, какой шаблон использования БД имеет с точки зрения количества соединений и размера запросов.