Системные переменные


Начиная с MySQL 4.0.3 мы предоставляем лучший доступ к большинству системных переменных и переменных, относящихся к соединению. Можно менять теперь большую часть переменных без необходимости останавливать сервер.

Есть два типа системных переменных: специфичные для потока (или для соединения; мы их в дальнейшем называем потоковыми переменными для краткости), которые уникальны для данного соединения и глобальные перемененные, которые предназначаются для управления глобальными событиями. Глобальные переменные также используются для того, чтобы установить значения по умолчанию для соответствующих потоковых переменных для новых соединений.

Когда mysqld запускается, все глобальные переменные инициализируются из командной строки и файлов опций. Вы можете изменять значения с помощью SET GLOBAL. Когда новый поток создается, потоковые переменные инициализируются из глобальных и они не меняются даже если вы даете новую команду SET GLOBAL.

Для установки глобальной переменной, используйте один из таких синтаксисов: (Здесь используется sort_buffer_size в качестве примера)

SET GLOBAL sort_buffer_size=value;
SET @@global.sort_buffer_size=value;

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

SET SESSION sort_buffer_size=value;
SET @@session.sort_buffer_size=value;
SET sort_buffer_size=value;

Если вы не указываете режим, то тогда подразумевается SESSION. Синтаксис команды SET.

LOCAL - синоним для SESSION.

Для получения значения глобальной переменной используйте одну из этих команд:

SELECT @@global.sort_buffer_size;
SHOW GLOBAL VARIABLES like 'sort_buffer_size';

Для получения значения потоковой переменной используйте одну из этих команд:

SELECT @@session.sort_buffer_size;
SHOW SESSION VARIABLES like 'sort_buffer_size';

Когда вы запрашиваете значение переменной с помощью синтаксиса @@variable_name и не укзываете GLOBAL или SESSION, то тогда MySQL вернет потоковое значение этой переменное, если таковое существует. Если нет, то MySQL вернет глобальное значение.

Причина, по которой требуется указывать GLOBAL для установки только глобальных переменных но не для получения их значения, заключается в том, чтобы удостовериться, что если мы в будущем не будем иметь проблем, если добавим потоковую переменную с таким же именем или уберем некую потоковую переменную. В этом случае вы можете ненароком изменить состояние сервера в целом, а не исключительно вашего соединения.

Далее идет полный список всех переменных которые вы можете изменять и значения которых можете получать, а также информация о том, можете ли вы использовать SESSION или GLOBAL с ними.

Переменная Тип значения Тип
autocommit булевое SESSION
big_tables булевое SESSION
binlog_cache_size число GLOBAL
bulk_insert_buffer_size число GLOBAL | SESSION
concurrent_insert булевое GLOBAL
connect_timeout число GLOBAL
convert_character_set строка SESSION
delay_key_write OFF | ON | ALL GLOBAL
delayed_insert_limit число GLOBAL
delayed_insert_timeout число GLOBAL
delayed_queue_size число GLOBAL
error_count число LOCAL
flush булевое GLOBAL
flush_time число GLOBAL
foreign_key_checks булевое SESSION
identity число SESSION
insert_id булевое SESSION
interactive_timeout число GLOBAL | SESSION
join_buffer_size число GLOBAL | SESSION
key_buffer_size число GLOBAL
last_insert_id булевое SESSION
local_infile булевое GLOBAL
log_warnings булевое GLOBAL
long_query_time число GLOBAL | SESSION
low_priority_updates булевое GLOBAL | SESSION
max_allowed_packet число GLOBAL | SESSION
max_binlog_cache_size число GLOBAL
max_binlog_size число GLOBAL
max_connect_errors число GLOBAL
max_connections число GLOBAL
max_error_count число GLOBAL | SESSION
max_delayed_threads число GLOBAL
max_heap_table_size число GLOBAL | SESSION
max_join_size число GLOBAL | SESSION
max_sort_length число GLOBAL | SESSION
max_tmp_tables число GLOBAL
max_user_connections число GLOBAL
max_write_lock_count число GLOBAL
myisam_max_extra_sort_file_size число GLOBAL | SESSION
myisam_max_sort_file_size число GLOBAL | SESSION
myisam_sort_buffer_size число GLOBAL | SESSION
net_buffer_length число GLOBAL | SESSION
net_read_timeout число GLOBAL | SESSION
net_retry_count число GLOBAL | SESSION
net_write_timeout число GLOBAL | SESSION
query_cache_limit число GLOBAL
query_cache_size число GLOBAL
query_cache_type enum GLOBAL
read_buffer_size число GLOBAL | SESSION
read_rnd_buffer_size число GLOBAL | SESSION
rpl_recovery_rank число GLOBAL
safe_show_database булевое GLOBAL
server_id число GLOBAL
slave_compressed_protocol булевое GLOBAL
slave_net_timeout число GLOBAL
slow_launch_time число GLOBAL
sort_buffer_size число GLOBAL | SESSION
sql_auto_is_null булевое SESSION
sql_big_selects булевое SESSION
sql_big_tables булевое SESSION
sql_buffer_result булевое SESSION
sql_log_binlog булевое SESSION
sql_log_off булевое SESSION
sql_log_update булевое SESSION
sql_low_priority_updates булевое GLOBAL | SESSION
sql_max_join_size число GLOBAL | SESSION
sql_quote_show_create булевое SESSION
sql_safe_updates булевое SESSION
sql_select_limit булевое SESSION
sql_slave_skip_counter число GLOBAL
sql_warnings булевое SESSION
table_cache число GLOBAL
table_type enum GLOBAL | SESSION
thread_cache_size число GLOBAL
timestamp булевое SESSION
tmp_table_size enum GLOBAL | SESSION
tx_isolation enum GLOBAL | SESSION
version строка GLOBAL
wait_timeout число GLOBAL | SESSION
warning_count число LOCAL
unique_checks булевое SESSION

Переменные, помеченные как число могут иметь числовое значение. Переменные, помеченные как булевое могут быть установлены в 0, 1, ON или OFF. Переменные типа enum должны в общем случае быть установлены в одно из возможных значений для переменной, но также могут быть установлены в значение числа, соответствующего значению выбора enum. Первый элемент списка enum - номер 0.

Вот описание некоторых переменных:

Переменная Описание
identity Синоним для last_insert_id (совместимость с Sybase)
sql_low_priority_updates Синоним для low_priority_updates
sql_max_join_size Синоним для max_join_size
delay_key_write_for_all_tables Если это и delay_key_write установлены, то тогда все вновь открываемые таблицы MyISAM открываются с задержкой записи ключей.
version Синоним для VERSION() (совместимость (?) с Sybase)

Описания других переменных можно найти в описании переменных запуска mysql, в описании команды SHOW VARIABLES и в разделе SET. Параметры командной строки mysqld. SHOW VARIABLES. Синтаксис команды SET.

Навигация