Настройка MySQL
Основное конфигурирование MySQL осуществляется с помощью файла /etc/my.cnf или /etc/mysql/my.cnf Указание кодировок и collation В секцию [mysqld] добавим строки:
1 2 3 |
character-set-server=utf8 collation-server=utf8_general_ci init-connect="SET NAMES utf8" |
character-set-server – кодировка для всего сервера; collation-server – порядок символов и строк на основе алфавитного порядка и классов эквивалентности; init-connect – строка, выполняемая для каждого клиента при соединении. Ограничение количества, таймауты и источники соединений
1 2 3 4 5 6 7 8 9 10 |
bind-address=localhost # Отключаем определение доменного имени для IP-адресов skip-name-resolve # Максимальное количество соединений max_connections = 250 # Отключаем использованием symbolic-links symbolic-links=0 # Таймауты interactive_timeout=60 wait_timeout=60 |
Увеличение числа открытых файлов В большинстве Linix-систем по умолчанию лимит открытия файловых дескрипторов установлен в 1024, для работы этого недостаточно. Проверим текущие опции:
1 |
ulimit -n |
Внесем требуемые лимиты в /etc/security/limits.conf
1 2 3 4 |
* hard nofile 35000 * soft nofile 35000 root hard nofile 35000 root soft nofile 35000 |
Динамически изменим текущие лимиты:
1 |
ulimit -n 35000 |
Проверим soft limit:
1 |
ulimit -Sn |
и hard limit
1 |
ulimit -Hn |
Текущие лимиты в MySQL проверим SQL-запросом:
1 |
SHOW VARIABLES LIKE '%open_files%' |
1 2 |
innodb_open_files 2048 open_files_limit 35000 |
Оптимизация MySQL для MyISAM Оптимизация параметров MySQL позволяет значительно увеличить производительность MyISAM. Буферы Основными параметрами являются key_buffer_size (буфер для работы с ключами и индексами) и sort_buffer (буфер для сортировки).
1 2 |
key_buffer_size = 64M sort_buffer_size = 32M |
При наличии 16Гб памяти и более, рекомендуется увеличить key_buffer_size до 128M-256M. Если Вы не используете MyISAM таблицы, рекомендуется установить размер key_buffer_size в 32Мб для хранения индексов временных таблиц. Кэши Кэш запросов указывается в опции query_cache_size, ограничение на кэшируемый элемент в query_cache_limit, кэш открытых таблиц в table_open_cache.
1 2 3 4 5 6 7 8 |
table_open_cache = 2048 query_cache_limit = 2M query_cache_size = 128M query_cache_type = 1 thread_cache_size = 16 max_heap_table_size = 128M tmp_table_size = 128M |
Будьте внимательны при установке завышенного значения query_cache_size, т.к. это может привести к ожиданию блокировок (Be careful not to set the size of the cache too large. Due to the need for threads to lock the cache during updates, you may see lock contention issues with a very large cache). Мы не рекомендуем устанавливать значение больше 256M. Параметр thread_cache_size указывает количество тредов (threads), уходящих в кеш при отключении […]
Read more