mysql -uroot -p
Посмотреть значений выполняется командой:
> SHOW VARIABLES WHERE `variable_name`='<Имя параметра>’;
Примеры более конкретных запросов будут рассмотрены ниже.
Принцип настройки
Для применения настройки можно выполнить запрос SQL со следующим синтаксисом:
SET GLOBAL <имя параметра> = <значение>;
Данная настройка будет использоваться до перезапуска СУБД. Чтобы применить ее навсегда, необходимо отредактировать конфигурационный файл. Местоположение данного файла может зависеть от версии MySQL/MariaDB. Возможные варианты:
- /etc/my.cnf
- /etc/my.cnf.d/server.cnf
В конфигурационном файле мы должны найти раздел [mysqld] и добавить в него значение для нужной нам опции:
<имя параметра> = <значение>
Если мы не задали значение с помощью SQL-команды, то можно перезапустить сервер баз данных для применения новой настройки:
systemctl restart mysql || systemctl restart mariadb
* в некоторых системах перезагрузка сервера баз данных выполняется командой service mysql restart или service mysqld restart или service mysql-server restart
Это приведет к перебою в работе СУБД.
Настройка max_connections
Конфигурационный файл:
[mysqld]
…
max_connections = 500
* в данном примере мы разрешим 500 одновременных подключений к MySQL. При превышении данного значения будет отображаться ошибка too many connections.
Задать текущее значение в SQL:
> SET GLOBAL max_connections = 500;
Посмотреть текущее значение:
> SHOW VARIABLES WHERE `variable_name`=’max_connections’;
Оптимальное значение
Для данного лимита нет золотого стандарта — маленькое значение может привести к выстраиванию очередей запросов, большое — к перегрузке серверного оборудования. Правильнее всего постоянно наблюдать за значениями max_connections и threads_connected и определить для себя свой, так называемый, Best Practices.
На первое время, для сервера можно поставить лимит в 200-300 подключений.
Опция max_user_connections
В отличие от max_connections, данная опция задает лимит для подключений конкретному клиенту.
Конфигурационный файл:
[mysqld]
…
max_connections = 500
max_user_connections = 50
* в данном примере сервер будет принимать 500 одновременных подключений, но от каждого клиента, максимум — 50.
Задать текущее значение в SQL:
> SET GLOBAL max_user_connections = 50;
Посмотреть текущее значение:
> SHOW VARIABLES WHERE `variable_name`=’max_user_connections’;
Лимит запросов wait_timeout
Конфигурационный файл:
[mysqld]
…
wait_timeout = 1200
* в данном примере устанавливаем лимит на 20 минут.
Задать текущее значение в SQL:
> SET GLOBAL wait_timeout = 1200;
Посмотреть текущее значение:
> SHOW VARIABLES WHERE `variable_name`=’wait_timeout’;
Максимальный размер пакета max_allowed_packet
Конфигурационный файл:
[mysqld]
…
max_allowed_packet = 128M
Задать текущее значение в SQL:
> SET GLOBAL max_allowed_packet = 134217728;
Посмотреть текущее значение:
> SHOW VARIABLES WHERE `variable_name`=’max_allowed_packet’;
Время ожидания транзакции innodb_lock_wait_timeout
Конфигурационный файл:
[mysqld]
…
innodb_lock_wait_timeout = 500
Задать текущее значение в SQL:
> SET GLOBAL innodb_lock_wait_timeout = 500;
Посмотреть текущее значение:
> SHOW VARIABLES WHERE `variable_name`=’innodb_lock_wait_timeout’;