Тонкая настройка MySQL

MySQL-сервер содержит большое количество системных переменных, с помощью которых можно производить его тонкую настройку. Глобальные переменные описываются в файле конфигурации my.cnf.
Получить полный список системных переменных в консольном клиенте mysql, можно с помощью команды

mysql> SHOW VARIABLES\g

Часть системных переменных, можно переопределить динамически, то-есть во время работы MySQL сервера, с помощью команды SET.

MySQL сервер поддерживает два типа переменных:

  • Глобальные переменные — инициализируются при старте MySQL-сервера, получая значения по умолчанию;
  • Сеансовые переменные — создаются для каждого соединения клиента с сервером и получают значения, установленные для глобальных переменных.


Для установки нового значения глобальной переменной, используется такая форма команды SET:

mysql> SET GLOBAL read_buffer_size=16384\g
Query OK, 0 rows affected (0.00 sec)

либо можно использовать альтернативную форму команды SET:

mysql> SET @@global.read_buffer_size=16384\g
Query OK, 0 rows affected (0.01 sec)

Посмотреть значение переменной можно несколькими способами

mysql> SHOW GLOBAL VARIABLES LIKE 'read_buffer_size'\g
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| read_buffer_size | 16384 |
+------------------+-------+
1 row in set (0.00 sec)

или

mysql> SELECT @@global.read_buffer_size\g
+---------------------------+
| @@global.read_buffer_size |
+---------------------------+
|                     16384 |
+---------------------------+
1 row in set (0.00 sec)

Для установки сеансовых переменных, используется:

mysql> SET SESSION read_buffer_size=16384\g
Query OK, 0 rows affected (0.00 sec)

или одна из альтернатив:

mysql> SET @@session.read_buffer_size=16384\g
mysql> SET LOCAL read_buffer_size=16384\g
mysql> SET read_buffer_size=8192\g

Обратите внимание, если не указано ни одно из ключевых слов GLOBAL, LOCAL или SESSION, переменная считается сессионной.

Посмотреть значения сессионных переменных, можно так-же несколькими способами с использованием ключевых слов, упомянутых выше.

Системные переменные MySQL сервера

auto_increment_increment
Устанавливает приращение для механизма AUTO_INCREMENT. Возможные значения: 1 — 65 535. Значение по умолчанию: 1. При установке значения 0, получает значение 1, при попытке присвоить значение меньше нуля или больше 65 535, принимает значение 65 535. Если например, присвоить данной переменной значение 10, то значения счетчика автоинкремента, будет увеличиваться не на 1, а на 10.Введена с версии 5.0.2.

Динамическая

auto_increment_offset
Устанавливает начальное значение счетчика для механизма AUTO_INCREMENT. Возможные значения: 1 — 65 535. Значение по умолчанию: 1. При установке значения 0, получает значение 1, при попытке присвоить значение меньше нуля или больше 65 535, принимает значение 65 535. Если присвоить этой переменной значение 7, счетчик автоинкремента, начнет увеличиваться не с 1, а с 7.Введена с версии 5.0.2.

Динамическая

back_log
Размер очереди запросов на подключение клиентов. При получении входящего запроса на соединение, основной поток MySQL сервера, после проверки запроса, запускает новый поток. Если запросов на соединение пришло слишком много за короткий промежуток времени, на их обслуживание потребуется некоторое время. Данная переменная устанавливает количество запросов, которые могут быть помещены в стек, на время, пока не освободится основной поток для их обслуживания. Все соединения выше данного значения — отбрасываются, клиенту выдается соответствующее сообщение. По сути, данная переменная устанавливает длину очереди, входящих TCP соединений, и не может превышать значение, установленной операционной системой.Статическая

basedir
Содержит путь к базовому каталогу установки. Может быть установлена с помощью параметра командной строки: —basedirСтатическая

bdb_cache_size
Задает размер буфера для индексов кэширования и строк таблиц BDB. Если данный тип таблиц, использовать не планируется, можно установить значение 0 или использовать параметр командной строки —skip-bdbСтатическая

bdb_cache_parts
Количество разделов в BDB-кэше.Появилась с версии NySQL 5.1.2.

bdb_home
Устанавливает путь к каталогу таблиц BDB. По умолчанию, имеет значение переменной datadir, определяющей путь к каталогу данных.Статическая

bdb_log_buffer_size
Задает размер буфера для индексов кэширования и строк таблиц BDB. Если данный тип таблиц, использовать не планируется, можно установить значение 0 или использовать параметр командной строки —skip-bdbСтатическая

bdb_logdir
Задает путь к каталогу, содержащему журнальные файлы BDB-таблиц. Так-же можно установить с помощью параметра —bdb-logdirСтатическая

bdb_max_lock
Задает количество активных блокировок в BDB-таблице. Значение этой переменной нужно увеличивать в случае возникновения ошибок при длинных транзакциях или если серверу MySQL приходится проверять большое количество строк в таблице.Статическая

bdb_region_size
Объем памяти BDB-окружения, определяющий размер пула, используемого для хранения имен файлов при транзакциях.Появилась в версии 5.1.2

bdb_shared_data
Переменная принимает значение ON, при запуске MySQL сервера с параметром —bdb-shared-data для обработки BDB таблиц в многопроцессорном режиме.Статическая

bdb_tmpdir
Путь к папке временных файлов BDB. Может быть установлена при запуске MySQL сервера, параметром —bdb-tmpdir.
binlog_cache_size
Размер кэша, используемого для хранения SQL-операторов бинарного журнала регистраций во время транзакций. Данный кэш выделяется для каждого клиента, если сервер использует любую из транзакционных таблиц ( BDB, InnoBD ) и на сервере включена поддержка бинарного журнала регистраций ( параметр запуска —log-bin ). При частом использовании объемных транзакций со множеством операторов, значение данной переменной рекомендуется увеличить.
binlog_format
Данная переменная определяет тип репликации и имеет три возможных параметра:

  • STATEMENT — репликация, основанная на анализе выполняемых запросов
  • ROW — репликация, основанная на изменении записей таблиц. ( начиная с версии 5.1.5 )
  • MIXED — смешанный тип, по умолчанию используется STATEMENT-репликация с переключениями в ROW-режим. ( начиная с версии 5.1.8 )

Значение можно установить при запуске сервера, параметром —binlog-format.

bulk insert buffer size
Таблицы MyISAM, используют древовидный кэш, для ускорения групповых операций вставки данных, для многострочного оператора INSERT, операторов INSERT …….. SELECT и LOAD DATA INFILE. Данная переменная ограничивает размер кэша на поток. При установке в 0, данная оптимизация будет отключена. Значение по-умолчанию, 8 мегабайт.
character_sets
Задает поддерживаемые кодировки.Удалена, начиная с версии 4.1.1, вместо нее введены различные переменные character_set_xxx

character_set_client
Переменная задает кодировку для операторов, приходящих от клиента.Введена начиная с MySQL 4.1.1.

character_set_connection
Задает кодировку для соединения клиента с сервером MySQL. В кодировку, заданную этой переменной перекодируются полученные от клиента операторы.Введена начиная с MySQL 4.1.1.

character_set_database
Задает кодировку, используемую базой данных по-умолчанию. Данная переменная устанавливается при каждом изменении текущей базы данных. Если ни одна база данных не выбрана, переменная имеет значение, которое получает база данных, если при ее создании, кодировка не указана явно.Введена начиная с MySQL 4.1.1.

character_set_filsystem
Задает кодировку, использующуюся для имен файлов в файловой системе. Введена начиная с MySQL 5.1.6.
character_set_results
Кодировка использующаяся для возвращаемых клиенту, результатов. Введена начиная с MySQL 4.1.1.
character_set_server
Кодировка MySQL сервера по-умолчанию. Введена начиная с MySQL 4.1.1.
character_set_system
Кодировка, используемая сервером для хранения идентификаторов. Всегда имеет значение UTF8. Введена начиная с MySQL 4.1.1.
character_sets_dir
Задает путь к каталогу с кодировками. Введена начиная с MySQL 4.1.2.
collation_connection
Каждая кодировка может применяться для представления нескольких языков, но для каждого языка должен использоваться уникальный порядок сортировки. Данная переменная задает сортировку для кодировки, установленной в переменной character_set_connection. Введена начиная с MySQL 4.1.1.
collation_database
Сортировка для кодировки, установленной переменной character_set_database. Введена начиная с MySQL 4.1.1.
collation_server
Сортировка для кодировки, установленной переменной character_set_server. Введена начиная с MySQL 4.1.1.
completion_type
Переменная определяет режим завершения транзакции.

  • 0 — операторы COMMIT и ROLLBACK не подвергаются изменению.
  • 1 — вышеупомянутые операторы эквивалентны COMMIT AND CHAIN и ROLLBACK AND CHAIN.
  • 2 — вышеупомянутые операторы эквивалентны COMMIT RELEASE и ROLLBACK RELEASE.

Введена начиная с MySQL 5.0.3.

concurent_insert
Одновременное использование операторов INSERT и SELECT, для таблиц, не содержащих свободных блоков.

  • 0 — отключено. Так-же можно использовать параметр —safe или —skip-new, при запуске MySQL сервера.
  • 1 — включено.
  • 2 — если таблицу одновременно использует второй поток, вставка новых записей будет производиться в конец таблицы, если с таблицей работает только один поток, записи будут добавлены в свободные блоки.

Значение 2 было добавлено в MySQL версии 5.0.6.

connect_timeout
Таймаут для подключения к серверу в секундах. По истечении данного интервала, будет выдано сообщение Bad handshake ( «рукопожатие» — в сетевой терминологии, способ согласования и установки соединения ).
datadir
Указывает на каталог данных. Может быть установлена при запуске MySQL сервера, параметром —datadir.
default_week_format
Режим по-умолчанию для функции WEEK().
delay_key_write
Данная переменная влияет на способ обработки ключевого слова DELAY_KEY_WRITE, оператора CREATE TABLES. Касается только таблиц MyISAM. Если при создании таблицы использовалось ключевое слово DELAY_KEY_WRITE, очистка буфера ключей производится не при каждом обновлении индекса, а только при закрытии таблицы, что позволяет увеличить скорость выполнения запросов.

  • OFF — ключевое слово DELAY_KEY_WRITE игнорируется
  • ONDELAY_KEY_WRITE не игнорируется, значение по-умолчанию
  • ALL — все новые таблицы рассматриваются как созданные с использованием DELAY_KEY_WRITE.
delayed_insert_limit
После вставки, указанного в данной переменной, количества отложенных строк, обработчик INSERT DELAYED проверяет, нет-ли незавершенных операторов SELECT, если таковые имеются, MySQL сервер выполняет их, после чего продолжает вставку отложенных строк. Значение по-умолчанию 100.
delayed_insert_timeout
Данная переменная устанавливает время ожидания обработчика INSERT DELAYED, оператора INSERT, перед завершением своей работы.
delayed_queue_size
Длина очереди обработчика INSERT DELAYED. В случае переполнения очереди, клиенты, выполнившие запрос INSERT DELAYED, будут ожидать освобождения в очереди свободного места.
div_precision_increment
Задает количество знаков после запятой в результате деления. Значение может быть от 0 до 30. Появилась начиная с версии 5.0.6.
event_scheduler
Включение/отключение планировщика заданий. По-умолчанию отключен. Переменная добавлена, начиная с версии MySQL 5.1.6.
expire_logs_days
Переменная задает срок хранения, в днях, бинарных логов. Если установлено значение 0, бинарные логи не удаляются. Переменная введена с версии MySQL 4.1.0.
flush
Данная переменная принимает значение ON, если MySQL сервер был запущен с параметром —flush. Включение данной переменной указывает MySQL серверу, сбрасывать изменения на диск после каждого SQL-оператора. Уменьшает вероятность разрушения таблиц при сбое, обратная сторона медали — серьезное снижение производительности. Как правило используется при нестабильной работе MySQL сервера.
flush_time
Если значение не равно нулю, таблицы закрываются каждые flush_time секунд, что-бы синхронизировать данные на диск. Использовать данную переменную рекомендуется только на системах Windows 98/ME а так-же на системах с минимальным количеством системных ресурсов
ft_boolean_syntax
Переменная содержит список поддерживаемых операций при полнотекстовом поиске в логическом режиме (IN BOOLEAN MODE). Значение по-умолчанию, + -><()~*:»»&|. Для изменения значения, применяются следующие правила:

  • функция операции определяется позицией в строке
  • значения замены должны состоять из 14 символов
  • каждый символ должен быть ASCII-символом, отличным от алфавитно-цифрового
  • первый или второй символ — обязательно пробел
  • дубликаты запрещены, кроме ковычек в 11 и 12 позициях. Данные символы не обязательно должны быть одинаковыми, но таковыми могут быть только они
  • позиции 10, 13 и 14 ( по-умолчанию :,& и |), резервируются для будущих расширений.
ft_max_word_len
Максимальная длина слова для включения в индекс FULLTEXT. Значение по-умолчанию — 84. При изменении значения данной переменной все FULLTEXT индексы должны быть перекомпонованы.
ft_min_word_len
Минимальная длина слова для включения в индекс FULLTEXT. Значение по-умолчанию — 4. При изменении значения данной переменной все FULLTEXT индексы должны быть перекомпонованы.
ft_query_expansion_limit
Максимально значение точных совпадений при полнотекстовом поиске с использование WITH QUERY EXPANSION. Введена с версии MySQL 4.1.1.
ft_stopword_file
Содержит путь к файлу стоп-слов ( наречия, союзы, предлоги и т.д ) для полнотекстового поиска. Установка пустого значения для данной переменной, приведет к отключению фильтрации стоп-слов. После изменения значения данной переменной все FULLTEXT индексы должны быть перестроены.
general_log
Данная переменная отображает, включен или выключен лог запросов, зависит от того, был MySQL сервер запущен с параметром —log или без него. Появилась с версии 5.1.12.
general_log_file
Путь в лог-файлу запросов. Может быть изменена при запуске MySQL сервера, с помощью параметра —log. Введена с версии MySQL 5.1.12.
group_concat_max_len
Максимальный размер для функции GROUP_CONCT(). Введена с версии 4.1.0.
have_archive
Поддержка текущей версией MYSQL сервера, таблиц типа ARCHIVE:

  • YES — поддерживает
  • NO — не поддерживает

Введена с версии 4.1.3

have_bdb
Поддержка текущей версией MYSQL сервера, таблиц типа BDB:

  • YES — поддерживает
  • NO — не поддерживает
  • DISABLED — если поддержка BDB отключена при старте MySQL сервера, параметром —skip-bdb
have_blackhole_engine
Поддержка текущей версией MYSQL сервера, таблиц типа BLACKHOLE:

  • YES — поддерживает
  • NO — не поддерживает

Введена с версии 4.1.11

have_compress
Значение данной переменной зависит от того, был-ли MySQL сервер скомпилирован с поддержкой библиотеки zlib.

  • YES — с поддержкой
  • NO — без поддержки

Во втором случае функции COMPRESS() и DECOMPRESS() будут не доступны. Появилась с версии MySQL 4.1.1.

have_crypt
Принимает значение в зависимости от того, поддерживает-ли операционка системный вызов crypt().

  • YES — поддерживает
  • NO — не поддерживает

Во втором случае, будут не доступны функции ENCRYPT().

have_cvs
Поддержка текущей версией MYSQL сервера, таблиц типа CVS:

  • YES — поддерживает
  • NO — не поддерживает

Появилась с версии MySQL 4.1.4.

have_dynamic_loading
Поддерживает-ли текущая версия MySQL сервера динамическую загрузку плагинов.

  • YES — поддерживает
  • NO — не поддерживает

Появилась с версии MySQL 5.1.10.

рhave_example
Поддержка текущей версией MYSQL сервера, таблиц типа EXAMPLE:

  • YES — поддерживает
  • NO — не поддерживает

Появилась с версии MySQL 4.1.4.

have_federated_engine
Поддержка текущей версией MYSQL сервера, таблиц типа FEDERATED:

  • YES — поддерживает
  • NO — не поддерживает

Появилась с версии MySQL 5.0.3.

have_geometry
Поддерживает-ли MySQL сервер пространственные расширения.

  • YES — поддерживает
  • NO — не поддерживает

Появилась с версии MySQL 4.1.3.

have_innodb
Поддержка текущей версией MYSQL сервера, таблиц типа InnoDB:

  • YES — поддерживает
  • NO — не поддерживает
  • DISABLED — если поддержка таблиц InnoDB была отключена при старте MySQL сервера, параметром —skip-innodb.
have_ndbcluster
Поддержка текущей версией MYSQL сервера, таблиц типа NDB Cluster:

  • YES — поддерживает
  • NO — не поддерживает
  • DISABLED — если поддержка NDB Cluster была отключена при старте MySQL сервера, параметром —skip-ndbcluster.
have_partitionung
Поддерживает-ли MySQL сервер сегментирование.

  • YES — поддерживает
  • NO — не поддерживает

Появилась с версии MySQL 5.1.6.

have_openssl
Поддержка MySQL сервером протокола SSL.

  • YES — поддерживает
  • NO — не поддерживает
have_query_cache
Поддерживается-ли кэш запросов.

  • YES — поддерживает
  • NO — не поддерживает
have_row_based_replication
Умеет-ли MySQL сервер выполнять репликацию с помощью построчного бинарного журнала.

  • YES — умеет
  • NO — не умеет

Введена с версии MySQL 5.1.5.

have_rtree_keys
Поддерживает-ли MySQL сервер RTREE-индексы

  • YES — поддерживает
  • NO — не поддерживает

Введена с версии MySQL 4.1.3.

Поддержка MySQL сервером символических ссылок.

  • YES — поддерживает
  • NO — не поддерживает
init_connect
Данная переменная задает один или несколько SQL-операторов, выполняющихся при подключении каждого клиента. Например так можно выставить кодировку по-умолчанию:

mysql> SET GLOBAL init_connect='SET NAMES cp1251'

При указании более одного оператора, в качестве разделителя используется точка с запятой, «;». Так-же значение данной переменной можно установить через командную строку или через конфигурационный файл my.cnf.

Введена с версии 4.1.2.

init_file
Переменная устанавливает путь к файлу, содержащему список SQL-операторов, которые NySQL сервер должен выполнить при старте. Каждый оператор должен быть на отдельной строке и не содержать комментариев. Кроме того файл инициализации может быть задан при старте MySQL сервера, параметром —init-file.
init_slave
В данной переменной может быть установлена строка, выполняемая подчиненным сервером репликации при каждом старте SQL-потока. Введена с версии 4.1.2.
interactive_timeout
Интервал времени в секундах, в течение которых сервер ожидает активности на интерактивном соединении, до его закрытия.
join_buffer_size
Размер буфера использующегося при операциях объединения таблиц ( если не используются индексы ). Буфер устанавливается один раз во время каждой операции объединения.
key_buffer_size
Индексные блоки таблиц MyISAM буферизуются. Все потоки используют общий буфер. Данная переменная устанавливает размер буфера для индексных блоков. Значение данной переменной нужно увеличивать, для повышения эффективности обработки индексов, как при операциях чтения, так и записи. В качестве рекомендуемого значения, обычно указывают 25% от общего объема оперативной памяти, но важно не переборщить, что-бы система не начала сбрасывать данные в SWAP( страничный файл ), что заметно снижает производительность.
key_cache_age_threshold
Переменная управляет понижением статуса буферов кэша ключей с hot hot-chain, до warm sub-chain.Чем меньше значение данной переменной, тем быстрей происходит данное понижение. Минимальное значение — 100. Значение по-молчанию — 300.Введена с версии 4.1.1.

key_cache_block_size
Размер блока кэша ключей ( в байтах ). Значение по-умолчанию — 1024.Введена с версии 4.1.1.

key_cache_division_limit
Данная переменная определяет разделительную точку между горячей ( hot sub-chain ) и теплой ( warm sub-chain ) подцепочками буферной цепочки кэша ключей. В переменной содержится процент буферной цепочки, который используется для теплой подцепочки ( warm sub-chain ). Возможные значения — диапазон от 0 — 100. Значение по-умолчанию — 100Появилась с версии MySQL 4.1.1.

language
Переменная определяет путь к каталогу языковой поддержки. Выбранный язык используется для вывода сообщений об ошибках.
large_file_support
Определяет, был-ли MySQL сервер скомпилирован с поддержкой больших файлов.
large_pages
Определяет, включена-ли поддержка больших страниц памяти ( более 4 Кбайт ).Введена с версии MySQL 5.0.3.

lc_time_names
Данная переменная устанавливает локаль MySQL сервера, что дает возможность выводить функциями DATE_FORMAT(), DAYNAME() и MONTHNAME(), названия дней и месяцев на национальном языке.
licanse
Тип лицензии текущего MySQL сервера.
local_infile
Поддерживается-ли ключевое слово LOCAL для оператора LOAD DATA INFILE.

  • ON — поддерживает
  • OFF — не поддерживает
locked_in_memory
Переменная сообщает, заблокирован-ли MySQL сервер с помощью параметра —memlock или нет.
log
Регистрация всех запросов в общем журнале запросов.

  • ON — включено
  • OFF — выключено
log_bin
Регистрация всех запросов в бинарном журнале.

  • ON — включено
  • OFF — выключено
log_bin_trust_function_creators
Данная переменная применяется когда включена регистрация запросов в журнальных файлах, она позволяет предотвратить попадание туда, небезопасных хранимых процедур.
log_error
Переменная устанавливает путь к лог файлу ошибок.
log_output
Переменная задает формат хранения общего лога запросов и лога медленных запросов. Может принимать одно из трех значений:

  • TABLE — записи журналов хранятся в таблице
  • FILE — записи журналов хранятся в файлах
  • NONE — отключить журналирование

Введена с версии MySQL 5.1.6.

log_queries_not_using_indexes
Включать-ли в лог медленных запросов, запросы не использующие индексы.

  • ON — включено
  • OFF — выключено

Введена с версии MySQL 5.1.11.

log_slave_updates
Переменная определяет, должны-ли обновления, получаемые подчиненным сервером в процессе репликации, регистрироваться в собственном бинарном журнале подчиненного сервера. Данная переменная работает, только если на подчиненном сервере активизировано ведение бинарного лога.
log_slow_queries
Регистрировать-ли медленные запросы в соответствующем лог файле. Медленным считается запрос, выполняющийся дольше значения, установленного в переменной long_query_time.
log_warnings
Данная переменная определяет, выводить-ли дополнительные предупреждения во время старта и работы MySQL сервера. Значение по-молчанию — 1. При значении больше единицы, ошибки в лог файл не заносятся.
long_query_time
Пороговое значение времени в секундах, по истечении которого запрос считается медленным. Если включено логгирование медленных запросов log_slow_queries, запрос попадает в соответствующий лог файл. Кроме того, счетчик slow_queries увеличивается на единицу. Стоит обратить внимание, что подсчитывается не процессорное, а реальное время. То есть запрос, который укладывается в отведенное время на слабо нагруженной системе, на системе под высокой нагрузкой, может выполнятся дольше отведенного времени.
low_priority_updates
Если данная переменная включена ( установлено значение 1 ), все операторы INSERT, UPDATE, DELETE и LOCK TABLE WRITE, будут ожидать пока на текущей таблице не останется невыполненных операций SELECT или LOCK TABLE READ.
lower_case_file_systems
Даная переменная определяет, имеет-ли значение регистр имен файлов и каталогов.
lower_case_table_names
Переменная определяет обработку регистра символов в именах таблиц.

  • 0 — сравнение имен таблиц осуществляется с учетом регистра
  • 1 — имена таблиц сохраняются на диск в нижнем регистре, сравнение имен таблиц не чувствительно к регистру
  • 2 — имена таблиц сохраняются во введенном пользователем регистре, но сравнение все равно производится в нижнем регистре

Не устанавливайте значение 0 для данной переменной на системах, не поддерживающих имена файлов чувствительных к регистру ( Windows, MacOS X ).

max_allowed_packet
Максимальный объем одного SQL-запроса к серверу. Изначально буфер сообщений имеет размер net_buffer_length и при необходимости, автоматически увеличивается до значения данной переменной.
max_binlog_cache_size
Размер кэша для транзакций с большим количеством операторов. В случае нехватки, будет выдано соответствующее сообщение об ошибке ( «Multi-statement transaction required more than ‘max_binlog_cache_size’ bytes of storage» ).
max_binlog_size
Данная переменная задает максимальный размер бинарного лог файла. При достижении размером файла, данного значения, будет открыт новый файл лога.
max_connect_errors
Задает максимально количество неудачных попыток подключения с хоста. Значение по-умолчанию 10. При достижении данного значения, хост блокируется. Разблокировать хост можно с помощью:

mysql> FLUSH HOSTS\g
max_connections
Максимально количество соединений клиентов с сервером.
max_delayed_threads
Ограничение числа потоков для обработки INSERT DELAYED
max_error_count
Данная переменная устанавливает максимальное количество сообщений об ошибках и предупреждениях, для вывода операторами SHOW ERRORS и SHOW WARNINGS.Введена с версии MySQL 4.1.0.

max_heap_table_size
Данная переменная устанавливает максимальный размер таблиц типа MEMORY ( HEAP ). Изменение значения этой переменной никак не отражается на уже существующих в памяти таблицах и влияет только на те, которые будут созданы заново.
max_insert_delayed_threads
Синоним для переменной max_delayed_threads
max_join_size
MySQL сервер блокирует операторы SELECT, которым может потребоваться проверить, количество комбинаций строк или провести поисков на диске, больше, чем указано в данной переменной. Данная переменная предотвращает использование операторов SELECT, в которых ключи используются некорректно или выполнение которых может занять слишком много времени. Ее удобно использовать, при необходимости избежать длительных операций объединения таблиц не использующих конструкцию WHERE или запросы возвращающие результат в миллионы строк.
max_length_for_sort_data
Переменная задает в байтах размер данных, который используется при оптимизации запросов ORDER BY с помощью неиндексированных столбцов.
max_prepared_stmt_count
Определяет максимальное количество разрешенных динамических запросов. Значение по-умолчанию — 16 382, возможные значения — от 0 до 1 000 000.Введена с версии MySQL 5.1.10.

max_relay_log_size
Размер журнала ретрансляции на подчиненном сервере репликации. При достижении файлом размера, заданного этой переменной, будет создан новый файл журнала. Возможные значения — от 4096 байт до 1 гигабайта.
max_seeks_for_key
Максимально допустимое количество операций при поиске строк по ключам.
max_sort_length
Переменная задает количество байт при операциях сортировки значений BLOB или TEXT. Использованы только первые max_sort_length, остальные игнорируются.
max_tmp_tables
Данная переменная определяет максимальное количество одновременно открытых временных таблиц для каждого клиента.В настоящий момент не используется и не учитывается.

max_user_connections
Максимальное число одновременных подключений для одной учетной записи MySQL. Значение по-умолчанию 0, отсутствие каких-либо ограничений.
max_write_lock_count
Количество блокировок на запись, после которых можно выполнить некоторое количество незаконченных блокировок на чтение
myisam_data_pointer_size
Размер указателя по-умолчанию ( в байтах ), используемый оператором CREATE TABLE для таблиц MyISAM, когда не задан ни один параметр MAX_ROWS. Возможные значения — от 2 до 8. Значение по-умолчанию — 4.Удалена в версии 5.0.6.

myisam_max_sort_file_size
Размер временного файла, использующегося при восстановлении индексов MyISAM, при использовании операторов REPAIR TABLE, ALTER TABLE или LOAD DATA INFILE. Если размер необходимого файла больше значения данной переменной, для создания индекса будет использоваться кэш ключей, что намного медленней.Значение этой переменной задается в мегабайтах.

myisam_recover_options
Данная переменная получает значение параметра —myisam-recover.
myisam_sort_buffer_size
Размер буфера выделяемого для сортировки MyISAM индексов с помощью оператора REPAIR TABLE или при создании индексов операторами CREATE TABLE, ALTER TABLE.
myisam_stats_method
Данная переменная определяет, как рассматривать значение NULL при построении индекса:

  • nulls_equal — NULL-значения воспринимаются как эквивалентные записи
  • nulls_unequal — NULL-значения интерпретируются как уникальные

Переменная появилась с версии MySQL 5.0.14. В предыдущих версиях, сервер ведет себя как если-бы значение этой переменной было установлено в nulls_equal.

myisam_use_mmap
Использование метода «отображение в память», при чтении/записи MyISAM таблиц.

  • ON — включено
  • OFF — выключено

Появилась в версии MySQL 5.1.4.

named_pipe
Поддерживает-ли MySQL сервер соединения через именованные каналы.

  • ON — поддерживает
  • OFF — не поддерживает

Переменная актуальна только при работе в операционной системе Windows.

net_buffer_length
Размер буфера для соединений, устанавливаемый сервером в промежутках между запросами. Если операторы передаваемые MySQL серверу не помещаются в буфер, его размер автоматически увеличивается до размера max_allowed_packet.
net_read_timeout
Таймаут ожидания, получения данных от клиента. Используется только при TCP соединениях и не используется при подключениях через UNIX-сокет или именованный канал.
net_retry_count
Количество попыток восстановить соединение в случае прерывания передачи данных, прежде чем задача будет завершена.
net_write_timeout
Таймаут ожидания, пока данные будут записаны в соединение, по истечении данного времени, операция записи будет отменена.
new
Поддержка возможностей сервера MySQL версии 4.1 на версии сервера 4.0.

  • ON — включена
  • OFF — выключена

На MySQL сервере версии выше 4.1, всегда принимает значение OFF.

old_passwords
Включить поддержку старого формата паролей, использовавшегося до версии 4.1.

  • ON — включена
  • OFF — выключена

Введена с версии 4.1.1.

open_files_limit
Сколько файлов, операционная система, разрешает открыть MySQL серверу. Данная переменная выводит значение, установленное в системной переменной sysctl kern.maxfilesperproc( FreeBSD ).
optimizer_prune_level
Использование эвристического механизма при оптимизации запросов.

  • 0 — эвристика отключена, используется всесторонний анализ
  • OFF — использовать эвристический механизм

Введена с версии 5.0.1.

optimizer_search_depth
Максимальная глубина поиска для оптимизатора запросов. Если значение данной переменной больше чем количество связей таблиц в многотабличном запросе, лучше генерируется схема оптимизации, однако, ее создание может занять значительное время. Значение, меньшее, чем количество связей в многотабличном запросе, приведет к более быстрому созданию схемы оптимизации, однако выполнение запроса по такой схеме, может быть далеко не оптимальным. Установка значения в 0 позволяет системе самой выбирать наиболее оптимальное в данный момент значение.Введена с версии 5.0.1.

pid_file
Путь к файлу, содержащему PID процесса. Так-же может быть установлена из командной строки, параметром —pid-file.
plugin_dir
Путь к каталогу плагинов.Ввведена с версии MySQL 5.1.2.

port
Порт, прослушиваемый MySQL сервером. Значение по-умолчанию 3306.
preload_buffer_size
Размер буфера, зарезервированного для загрузки индексов.Введена с версии 4.1.1.

prepared_stmt_count
Счетчик текущего количества динамических запросов. Максимальное значение устанавливается переменной max_prepared_stmt_count.Введена с версии MySQL 5.1.10.

protocol_version
Данная переменная содержит версию протокола, используемого MySQL сервером.
query_alloc_block_size
Размер блоков памяти, выделяемых для объектов, создаваемых при анализе и выполнении запросов. Данная переменная может облегчить жизнь при наличии проблем с фрагментацией памяти.
query_cache_limit
Запросы, результат которых превышает значение данной переменной, не будут размещаться в кэше запросов.
query_cache_min_res_unit
Минимальный размер блоков, выделяемых кэшем запросов. Значение по-умолчанию — 4 Кбайта.Введена с версии MySQL 4.1.0.

query_cache_size
Объем памяти, выделенной для кэширования результатов запросов.По-умолчанию данный кэш отключен, значение — 0.

query_cache_type
Управление кэшированием запросов.

  • OFF или 0 — MySQL сервер кэширует запросы и не извлекает результаты из кэша. Однако, это не освобождает буфер кэша запросов, для этого следует установить переменную query_cache_size в значение 0.
  • ON или 1 — MySQL-сервер будет кэшировать все запросы, кроме начинающихся с конструкции SELECT SQL_NO_CACHE
  • DEMAND или 2 — MySQL-сервер будет кэшировать только запросы, начинающихся с конструкции SELECT SQL_CACHE
query_cache_wlock_invalidate
Управление блокировками таблиц MyISAM.

  • ON — при блокировке WRITE, будут игнорироваться любые запросы в том числе и на чтение, то есть, пока таблица заблокирована, все клиенты будут ждать.
  • OFF — при запросе клиентом, блокировки WRITE, остальные клиенты не блокируются на чтение, если результат запроса присутствуют в кэше.
query_prealloc_size
Размер постоянного буфера, использующегося для синтаксического анализа и выполнения запросов. Рекомендуется увеличить значение данной переменной при работе со сложными запросами, тогда отпадает необходимость распределять память во время выполнения запроса.
range_alloc_block_size
Размер блоков, выделяемых при оптимизации области памяти.
read_buffer_size
Размер буфера, выделяемого потоком для каждой сканируемой таблицы. При частом последовательном сканировании, рекомендуется увеличить значение данной переменной.
read_only
Данная переменная применяется на подчиненном сервере репликации. Если ее значение установлено в ON, изменения принимаются только с основного сервера репликации, но не от клиентов.
relay_log_purge
Управление режимом удаления старых журнальных файлов.

  • ON — режим очистки включен
  • OFF — режим очистки выключен

Введена с версии MySQL 4.1.1.

read_rnd_buffer_size
Размер буфера, выделяемого для чтения строк после сортировки, что-бы избежать повторного поиска на диске. Увеличение значения данной переменной может существенно увеличить эффективность конструкции ORDER BY.Имейте в виду, так как данный буфер выделяется для каждого клиента, не следует устанавливать чересчур большое значение.

rpl_recovery_rank
Не используется
secure_auth
Разрешить-ли использование паролей в старом формате. Включение данной переменной равнозначно использованию параметра —secure-auth при запуске MySQL сервера.

  • ON — разрешить
  • OFF — запретить
server_id
Используется для присвоения MySQL серверу уникального ID. Так-же можно использовать параметр командной строки —server-id при запуске сервера.
shared_memory
Разрешено-ли использовать разделяемую память соединений. Применяется только в операционной системе Windows.

  • ON — разрешить
  • OFF — запретить
shared_memory_base_name
Имя для разделяемой памяти соединений. Применяется для запуска нескольких MySQL серверов. Используется только в Windows.Введена с версии 4.1.1.

skip_external_locking
Использование MySQL сервером внешних блокировок.

  • ON — включить
  • OFF — выключить
skip_networking
Принимать-ли MySQL серверу TCP/IP соединения по сети, или разрешить только локальные.

  • ON — принимать только локальные соединения
  • OFF — принимать TCP/IP соединения по сети
skip_show_database
Ограничивает использование оператора SHOW DATABASES( вывести список таблиц ).

  • ON — разрешает использовать оператор SHOW DATABASES только пользователям имеющим привилегию SHOW DATABASES или привилегии для доступа к базе данных
  • OFF — оператор SHOW DATABASES могут использовать все пользователи
slave_compressed_protocol
Использовать сжатие при обмене данными между основным и подчиненным серверами репликации. Сжатие данных возможно только если его поддерживают оба сервера.

  • ON — использовать сжатие
  • OFF — не использовать сжатие
slave_load_tmpdir
Путь к папке временных файлов подчиненного сервера для репликации оператора LOAD DATA INFILE.
slave_net_timeout
Время, которое подчиненный сервер будет ожидать данные с главного сервера, прежде чем разорвать соединение.
slave_skip_errors
При включении данной переменной, значение ON, подчиненный сервер будет игнорировать ошибки репликации.
slow_launch_time
Если превышается значение этой переменной, сервер увеличивает значение счетчика slow_launch.
slow_query_log
Управление логгированием медленных запросов. Можно использовать параметр запуска —log-slow-queries.

  • ON — включить
  • OFF — выключить

Введена с версии 5.1.12

slow_query_log_file
Имя для файла медленных запросов. Можно установить при запуске MySQL сервера, параметром —log-slow-queries.Введена с версии 5.1.12

socket
Путь к файлу UNIX-сокета, используемого для соединения с клиентами. В системе Windows — имя именованного канала для локальных соединений.
sort_buffer_size
Размер буфера, выделяемого на поток при выполнении операций сортировки. Для ускорения операций ORDER BY, GROUP BY рекомендуется увеличить данное значение.
sql_mode
Режим работы MySQL-сервера.
sql_slave_skip_counter
Данная переменная определяет, какое количество событий основного сервера, должен проигнорировать подчиненный сервер репликации.
ssl_ca
Путь к файлу листа доверия SSL CA.Введена с версии MySQL 5.1.11.

ssl_capath
Путь к каталогу с SSL сертификатом.Введена с версии MySQL 5.1.11.

ssl_cert
Переменная задает имя SSL сертификата, используемого для SSL соединений.Введена с версии MySQL 5.1.11.

ssl_cipher
Список разрешенных для SSL алгоритмов шифрования.
ssl_key
Имя файла ключей для SSL соединений.
storage_engine
Переменная является синонимом table_type.
sync_binlog
Синхронизация данных в памяти с жестким диском. Включение данной переменной снижает вероятность потери данных, но плата за это — некоторое снижение производительности.

  • 0 — не производить синхронизацию.
  • 1 — синхронизировать данные после записи в журнал команды sync_binlog.

Введена с версии MySQL 4.1.3.

sync_frm
При установке значения 1, при создании любого не временного файла, данные в оперативной памяти синхронизируются с диском.Введена с версии MySQL 4.1.3.

system_time_zone
Данная переменная содержит информацию о часовом поясе, которая извлекается из операционной системы при старте MySQL сервера. При необходимости, с помощью этой переменной, можно скорректировать часовой пояс, но предпочтительней воспользоваться переменной time_zone, устанавливающей часовой пояс для конкретного соединения а не для всего сервера.
table_cache
Старое название для переменной table_open_cache.Начиная с версии MySQL 5.1.3, следует использовать именно table_open_cache.

table_definition_cache
Переменная задает количество идентификаторов, которые могут храниться в кэше определений. При использовании большого количества таблиц, имеет смысл увеличить значение данной переменной для повышения производительности.Появилась с версии MySQL 5.1.3.

table_lock_wait_timeout
Время ожидания блокировки таблицы. Значение по-умолчанию — 50 секунд.Появилась с версии MySQL 5.0.10.

table_open_cache
Максимально разрешенное количество открытых таблиц.
table_type
В данной переменной содержится тип таблицы по-умолчанию ( MyISAM, InnoDB или BDB ).
thread_cache_size
Данная переменная определяет, сколько потоков, сервер должен поместить в кэш для повторного использования. После отключения клиента, потоки не удаляются а помещаются в кэш, как только MySQL серверу понадобятся новые потоки, он берет их из кэша. Новые потоки создаются только в случае, если кэш пуст. Увеличение значения этой переменной может повысить производительность MySQL сервера, но только в системах с хорошей реализацией потоков.
thread_concurrency
В некоторых операционных системах, с помощью этой переменной, можно задать количество одновременно запускаемых потоков.
thread_stack
Данная переменная задает размер стека для каждого потока.
time_format
В настоящий момент не используется.
time_zone
Переменная определяет текущий часовой пояс.
tmp_table_size
Если размер временной превышает размер, установленный этой переменной, она сбрасывается на диск. При наличии достаточного количества памяти на сервере, рекомендуется повысить значение данной переменной, по ускорения запросов с конструкцией GROUP BY.
tmpdir
Путь к каталогу для временных таблиц и файлов. Начиная с версии MySQL 4.1, этой переменной можно присваивать список путей, разделенных двоеточием «:» ( для Windows, Netware и OS/2 в качестве разделителя используется точка с запятой «;» ).
transaction_alloc_block_size
Размер блоков памяти, выделяемых для сохранения запросов, являющихся частью транзакции, в бинарный журнал регистрации.
transaction_prealloc_size
Переменная задает размер постоянного буфера, выделяемого для сохранения запросов, являющихся частью транзакции, в бинарный журнал регистрации. Данный буфер не высвобождается в промежутках между запросами.
tx_isolation
Задает уровень локализации транзакций по-умолчанию.
updatable_views_with_limit
Переменная определяет, можно-ли использовать обновления с помощью оператора UPDATE, у которого отсутствует условие WHERE со ссылкой на первичный ключ или индекс.

  • 1 или YES — подобное обновление разрешено, при этом выдается предупреждение.
  • 0 или NO — подобное обновление не допускается.

Переменная введена с версии MySQL 5.0.2.

version
Содержит версию MySQL сервера.
version_bdb
Содержит версию BDB движка.
version_comment
Комментарий к текущей версии MySQL сервера.
version_compile_machine
Тип архитектуры, для которой была скомпилирована данная версия MySQL сервера.
version_compile_os
Тип операционной системы, для которой скомпилирована данная версия MySQL сервера.
wait_timeout
Таймаут в течение которого MySQL сервер ожидает активности от неинтерактивного соединения, прежде чем закрыть его.

Ссылки: