У нас есть локальная установка Optiplex на ПК для запуска нашей общей базы данных MySQL MariaDB без возможности доступа к ней из внешнего мира. В нем нет критических данных, которые нужно защищать.
По сути, не требуется безопасности, шифрования или администрирования. Какая самая быстрая конфигурация для нашей установки с точки зрения производительности?
Вот наша текущая конфигурация:
[mysqld]
max_connections=500
join_buffer_size = 2M
tmp_table_size = 24M
max_heap_table_size = 24M
query_cache_size = 256M
key_buffer=256M
key_buffer_size = 1332M
thread_cache_size = 4
table_cache = 500
table_open_cache = 96
innodb_buffer_pool_size = 27M
slow_query_log
local-infile=0
skip-name-resolve
Я запускаю Debian 10 на Optiplex 780, core2duo E8500 с 4 ГБ ОЗУ. Мои характеристики можно найти здесь! https://i.dell.com/sites/doccontent/shared-content/data-sheets/en/Documents/optiplex_780_tech_spec_sheet.pdf
Это зависит от того, сколько у вас оперативной памяти.
query_cache_size
слишком большой. Не выделяйте более 50 миллионов. В большинство сервера лучше выключить.
key_buffer_size = 1332M
innodb_buffer_pool_size = 27M
Это подразумевает, что вы используете более медленный ENGINE = MyISAM.
Устарели:
key_buffer=256M
table_cache = 500
Невозможно обеспечить «максимально быстрое» без некоторых подсказок о том, на что похоже ваше приложение.
Обычно «медленный» сервер работает медленно из-за отсутствия индексов и / или плохо сформулированных запросов, не конфигурация.
Запустите в течение месяца, затем предоставьте данные, указанные Уилсоном. Кроме того, оставьте включенным медленный журнал, чтобы мы могли находить «медленные» запросы.
Большинство настроек, которые у вас есть, либо бессмысленны, либо совершенно контрпродуктивны.
Удалите их все. Убедитесь, что вы используете только InnoDB. Отрегулируйте размер innodb_buffer_pool до 50-80% вашей оперативной памяти (но не больше, чем ваши фактические данные). Добавьте innodb_file_per_table = 1. Все остальные настройки следует оставить в покое, если вы не знаете именно что вы делаете и меняете настройку по очень конкретной причине.
Игнорируйте все, что вам сообщает сценарий настройки MySQL.
Если вам не важна целостность данных в случае сбоя: innodb_doublewrite = 0 innodb_flush_logs_on_trx_commit = 0
Если вас не заботит целостность данных перед лицом неисправного оборудования: innodb_checksum = none
Существует множество скриптов, которые подключаются к вашему серверу MySQL, анализируют некоторые переменные и статистику производительности вашей работающей системы и предлагают изменения конфигурации. Самые известные из них https://github.com/major/MySQLTuner-perl и https://github.com/BMDan/tuning-primer.sh