Просто чтобы получить некоторую перспективу извлечения вашего конфигурационного файла, я сделал сравнение со значением по умолчанию (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, чтобы выяснить, что отвечает за службу, которая не принимает подключения или вообще не устанавливает соединение. Если вы действительно хотите оптимизировать производительность БД, вам придется это сделать. Подумайте об использовании дополнительных индексов для таблиц, где это целесообразно, чтобы повысить производительность запросов и посмотреть, какие запросы фактически выполняются в БД. Кроме того, постарайтесь получить представление о том, какой шаблон использования БД имеет с точки зрения количества соединений и размера запросов.