Справочное руководство по MySQL

         

Глава 4.5.6.4 SHOW VARIABLES

SHOW VARIABLES [LIKE wild]

Команда SHOW VARIABLES отображает значения некоторых системных переменных MySQL. Такую же информацию можно получить и при помощи команды mysqladmin variables. Если установленные по умолчанию значения вам не подходят, большинство из этих переменных можно задать, используя параметры командной строки при запуске mysqld. See section 4.1.1 Параметры командной строки mysqld.

Ниже приведен пример выходных данных; формат и числа могут иметь некоторые отличия:

+------------------------------+---------------------------+
| Variable_name | Value |


+------------------------------+---------------------------+ | ansi_mode | OFF | | back_log | 50 | | basedir | /my/monty/ | | bdb_cache_size | 16777216 | | bdb_log_buffer_size | 32768 | | bdb_home | /my/monty/data/ | | bdb_max_lock | 10000 | | bdb_logdir | | | bdb_shared_data | OFF | | bdb_tmpdir | /tmp/ | | binlog_cache_size | 32768 | | concurrent_insert | ON | | connect_timeout | 5 | | datadir | /my/monty/data/ | | delay_key_write | ON | | delayed_insert_limit | 100 | | delayed_insert_timeout | 300 | | delayed_queue_size | 1000 | | flush | OFF | | flush_time | 0 | | ft_min_word_len | 4 | | ft_max_word_len | 254 | | ft_max_word_len_for_sort | 20 | | ft_boolean_syntax | + -><()~* | | have_bdb | YES | | have_innodb | YES | | have_raid | YES | | have_openssl | NO | | init_file | | | interactive_timeout | 28800 | | join_buffer_size | 131072 | | key_buffer_size | 16776192 | | language | /my/monty/share/english/ | | large_files_support | ON | | log | OFF | | log_update | OFF | | log_bin | OFF | | log_slave_updates | OFF | | long_query_time | 10 | | low_priority_updates | OFF | | lower_case_table_names | 0 | | max_allowed_packet | 1048576 | | max_binlog_cache_size | 4294967295 | | max_connections | 100 | | max_connect_errors | 10 | | max_delayed_threads | 20 | | max_heap_table_size | 16777216 | | max_join_size | 4294967295 | | max_sort_length | 1024 | | max_tmp_tables | 32 | | max_write_lock_count | 4294967295 | | myisam_bulk_insert_tree_size | 8388608 | | myisam_recover_options | DEFAULT | | myisam_sort_buffer_size | 8388608 | | net_buffer_length | 16384 | | net_read_timeout | 30 | | net_retry_count | 10 | | net_write_timeout | 60 | | open_files_limit | 0 | | pid_file | /my/monty/data/donna.pid | | port | 3306 | | protocol_version | 10 | | record_buffer | 131072 | | query_buffer_size | 0 | | query_cache_limit | 1048576 | | query_cache_size | 16768060 | | query_cache_startup_type | 1 | | safe_show_database | OFF | | server_id | 0 | | skip_locking | ON | | skip_networking | OFF | | skip_show_database | OFF | | slow_launch_time | 2 | | socket | /tmp/mysql.sock | | sort_buffer | 2097116 | | table_cache | 64 | | table_type | MYISAM | | thread_cache_size | 4 | | thread_stack | 65536 | | tmp_table_size | 1048576 | | tmpdir | /tmp/ | | version | 3.23.29a-gamma-debug | | wait_timeout | 28800 | +------------------------------+---------------------------+

Ниже описаны все параметры. Значения размеров буферов, длины и размеры стеков приведены в байтах. Значения можно указать с суффиксом 'K' или 'M', чтобы обозначить килобайты или мегабайты. Например, 16M означает 16 мегабайт. Регистр буквы суффикса не имеет значения, 16M и 16m обозначают одно и то же:

  • ansi_mode. Имеет значение ON, если mysqld был запущен с параметром --ansi. See section 1.9.2 Запуск MySQL в режиме ANSI.
  • back_log Количество поддерживаемых MySQL запросов на соединение, находящихся в очереди. Этот параметр начинает играть роль, когда главный поток MySQL получает очень много запросов на соединение за короткий промежуток времени. У главного потока уходит некоторое время (хотя очень небольшое) на проверку соединения и запуск нового потока. Значение back_log показывает, сколько запросов может находиться в очереди на этом коротком промежутке времени, прежде чем MySQL прекратит отвечать на новые запросы. Данное значение необходимо увеличить только в том случае, если ожидается большое количество соединений на протяжении короткого промежутка времени. Иначе говоря, это значение является размером очереди ожидания входящих соединений TCP/IP. У вашей операционной системы есть свое собственное ограничение на размер этой очереди. За более подробной информацией обращайтесь на страницу руководства ОС Unix по системному вызову listen(2). Чтобы узнать максимальное значение для этой переменной, обратитесь к документации по своей операционной системе. Попытка установить значение back_log выше, чем допускается в вашей операционной системе, не принесет положительного результата.
  • basedir Значение параметра --basedir.
  • bdb_cache_size Буфер, выделенный для индекса кэша и строк таблиц BDB. Если таблицы BDB не используются, необходимо запустить mysqld с параметром --skip-bdb, чтобы не расходовать память на этот кэш.
  • bdb_log_buffer_size Буфер, выделенный для индекса кэша и строк таблиц BDB. Если таблицы BDB не используются, его значение необходимо установить в 0 или запустить mysqld с параметром --skip-bdb, чтобы не расходовать память на этот кэш.
  • bdb_home Значение параметра --bdb-home.
  • bdb_max_lock Максимальное количество блокировок (по умолчанию 1000), которые можно установить на таблицу BDB. Этот параметр необходимо увеличить, если возникают ошибки типа bdb: Lock table is out of available locks или Got error 12 from ... при выполнении длинных транзакций или когда mysqld должен просмотреть много строк для вычисления запроса.
  • bdb_logdir Значение параметра --bdb-logdir.
  • bdb_shared_data Содержит значение ON, если используется параметр --bdb-shared-data.
  • bdb_tmpdir Значение параметра --bdb-tmpdir.
  • binlog_cache_size. Размер кэша для хранения операторов бинарного журнала SQL во время транзакции. Если часто используются большие транзакции со значительным количеством операторов, то в целях повышения производительности значение этого параметра можно увеличить. See section 6.7.1 Синтаксис команд BEGIN/COMMIT/ROLLBACK.
  • character_set Принятый по умолчанию набор символов.
  • character_sets Поддерживаемые наборы символов.
  • concurrent_inserts Если установлено значение ON (принятое по умолчанию), MySQL обеспечивает возможность использовать команду INSERT на таблицах MyISAM одновременно с выполнением над этими же таблицами запросов SELECT. Этот параметр можно отключить, запустив mysqld с параметром --safe или --skip-new.
  • connect_timeout Количество времени в секундах, на протяжении которого сервер mysqld ожидает поступления пакета соединения, после чего генерирует Bad handshake.
  • datadir Значение параметра --datadir.
  • delay_key_write Если включен (по умолчанию - включен), MySQL будет учитывать параметр DELAY_KEY_WRITE для команды CREATE TABLE. Это означает, что ключевой буфер таблиц с данным параметром будет сбрасываться на диск не при каждом обновлении индексов, а только при закрытии таблицы. Такой режим работы значительно ускоряет запись ключей, однако в случае использования данного параметра необходимо будет также добавить автоматическую проверку всех таблиц при помощи myisamchk --fast --force. Обратите внимание: если запустить mysqld с параметром --delay-key-write-for-all-tables, то все таблицы будут обрабатываться таким образом, как будто они были созданы с применением параметра delay_key_write. Этот флаг можно снять, запустив mysqld с параметром --skip-new или --safe-mode.
  • delayed_insert_limit После вставки строк delayed_insert_limit обработчик INSERT DELAYED проверит, остались ли незавершенные операторы SELECT. Если да, то перед тем, как приступить к выполнению следующих действий, они будут выполнены.
  • delayed_insert_timeout Временной промежуток, в течение которого процесс INSERT DELAYED должен ожидать операторов INSERT до прекращения выполнения задачи.
  • delayed_queue_size Размер очереди (в строках), который должен быть назначен для обработки команды INSERT DELAYED. При переполнении очереди все клиенты, выполняющие команду INSERT DELAYED, будут ожидать, пока в очереди снова появится свободное место.
  • flush Значение этой переменной будет ON, если вы запустили MySQL с параметром --flush.
  • flush_time Если значение этой переменной отличается от нуля, то каждые flush_time секунд все таблицы будут закрываться (чтобы освободить ресурсы и записать информацию на диск). Мы рекомендуем использовать этот параметр только для Windows 9x/Me или на системах с ограниченным количеством ресурсов.
  • ft_min_word_len Минимальная длина слова, включаемого в индекс FULLTEXT. Примечание: индексы FULLTEXT после изменения этой переменной должны быть скомпонованы заново (это новый параметр в MySQL 4.0).
  • ft_max_word_len Максимальная длина слова, включаемого в индекс FULLTEXT. Примечание: индексы FULLTEXT после изменения этой переменной должны быть скомпонованы заново (это новый параметр в MySQL 4.0).
  • ft_max_word_len_sort Максимальная длина слова в индексе FULLTEXT; эта длина будет использоваться для метода быстрого восстановления индекса в командах REPAIR, CREATE INDEX или ALTER TABLE. Более длинные слова вставляются дольше. При увеличении значения ft_max_word_len_sort MySQL будет создавать временные файлы большего размера (таким образом будет замедляться работа из-за возрастания нагрузки на порт ввода/вывода диска), а также будет помещать меньше ключей в один блок сортировки (что, опять же, способствует снижению производительности). Если значение переменной ft_max_word_len_sort слишком мало, MySQL будет вставлять большое количество слов достаточно медленно, но короткие слова будут вставляться очень быстро.
  • ft_boolean_syntax Список операторов, поддерживаемых командой MATCH ... AGAINST(... IN BOOLEAN MODE). See section 6.8 Полнотекстовый поиск в MySQL.
  • have_innodb Значение YES, если mysqld поддерживает таблицы InnoDB. Значение DISABLED, если используется параметр --skip-innodb.
  • have_bdb Значение YES, если mysqld поддерживает таблицы Berkeley DB. Значение DISABLED, если используется параметр --skip-bdb.
  • have_raid Значение YES, если mysqld поддерживает параметр RAID.
  • have_openssl Значение YES, если mysqld поддерживает SSL (шифрование) в протоколе клиент/сервер.
  • init_file Имя файла, указанного при помощи параметра --init-file при запуске сервера. Это файл операторов SQL, которые сервер должен выполнить при запуске.
  • interactive_timeout Количество времени в секундах, на протяжении которого сервер ожидает активности со стороны интерактивного соединения, прежде чем закрыть его. Интерактивный клиент - это клиент, который использует параметр CLIENT_INTERACTIVE для mysql_real_connect(). См. также информацию по wait_timeout.
  • join_buffer_size Размер буфера, используемого для полных объединений (объединения, в которых не применяются индексы). Буфер выделяется один раз для каждого полного объединения двух таблиц. Если нужно ускорить полное объединение и невозможно добавить индексы, следует увеличить это значение (обычно добавление индексов является лучшим способом добиться быстрых объединений).
  • key_buffer_size Блоки индексов буферизированы и доступ к ним разрешен всем потокам. key_buffer_size - размер буфера, используемого для блоков индексов. Чтобы улучшить обработку индексов (для всех операций чтения и записи нескольких элементов), необходимо увеличить это значение настолько, насколько возможно. Размер 64 Мб для компьютера с 256 Мб (именно такой компьютер в основном используется для работы с MySQL) - довольно распространенная конфигурация. Тем не менее, если задать слишком большое значение (например, больше 50% от общего количества памяти), система может начать сохранять временные файлы на диске, что значительно снизит производительность. Помните, что, поскольку MySQL не производит кэширования считываемых данных, нужно оставлять определенное пространство для кэша файловой системы операционной системы. Производительность буфера ключей можно проверить, выполнив команду show status и проверив значения переменных Key_read_requests, Key_reads, Key_write_requests и Key_writes. Отношение значений Key_reads/Key_read_request обычно должно быть < 0,01. Отношение Key_write/Key_write_requests примерно равно 1, если в основном используются обновления/удаления, но может быть и меньше, если чаще используются обновления сразу многих элементов или если delay_key_write. See section 4.5.6 Синтаксис команды SHOW. Чтобы еще больше увеличить скорость при одновременной записи большого количества строк, используйте команду LOCK TABLES. See section 6.7.2 Синтаксис команд LOCK TABLES/UNLOCK TABLES.
  • language Язык, используемый для вывода сообщений об ошибках.
  • large_file_support Если mysqld был откомпилирован с параметрами для поддержки больших файлов.
  • locked_in_memory Если mysqld был заблокирован в памяти при помощи --memlock
  • log Если включено занесение в журнал всех запросов.
  • log_update Если включен журнал обновлений.
  • log_bin Если включен бинарный журнал.
  • log_slave_updates Если обновления от подчиненного компьютера должны заноситься в журнал.
  • long_query_time Если обработка запроса отнимает больше указанного промежутка времени (в секундах), значение счетчика Slow_queries будет увеличено. Если используется параметр --log-slow-queries, запрос будет записан в журнал медленных запросов. See section 4.9.5 Журнал медленных запросов.
  • lower_case_table_names Если установлено значение 1, имена таблиц будут сохранятся на диск с использованием строчных букв, а имена таблиц не будут чувствительны к регистру. See section 6.1.3 Чувствительность имен к регистру.
  • max_allowed_packet Максимальный размер одного пакета. Изначально размер буфера сообщений устанавливается в net_buffer_length байтов, но при необходимости может возрасти до max_allowed_packet байтов. Это значение по умолчанию не настолько велико, чтобы отсеивать большие (возможно ошибочные) пакеты. Если используются большие столбцы BLOB, его необходимо увеличить. Значение должно быть не меньше самого большого BLOB, который будет использоваться. Ограничение протокола для max_allowed_packet составляет 16 Мб в MySQL 3.23 и 2Гб в MySQL 4.0.
  • max_binlog_cache_size Если для транзакции с большим количеством операторов потребуется большее количество памяти, чем указано этим параметром, будет выдано сообщение об ошибке "Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage" (для транзакции с большим количеством операторов требуется больше, чем 'max_binlog_cache_size' байтов для хранения).
  • max_binlog_size Доступно после версии 3.23.33. Если запись в бинарный журнал (репликация) превысит данное значение, производится ротация журнала. Нельзя установить значение, меньшее, чем 1024 байта или большее, чем 1 Гб. По умолчанию установлено значение 1 Гб.
  • max_connections Разрешенное количество одновременно подсоединенных клиентов. Увеличение этого значения увеличивает количество дескрипторов файлов, необходимых для mysqld. Ниже приведены примечания по ограничениям для дескрипторов. See section A.2.5 Ошибка Too many connections.
  • max_connect_errors Если количество прерванных соединений с удаленным компьютером превышает это число, дальнейшие попытки удаленного компьютера установить соединение будут заблокированы. Блокировку с удаленного компьютера можно снять при помощи команды FLUSH HOSTS.
  • max_delayed_threads Не запускайте больше потоков, чем указано здесь, для обработки операторов INSERT DELAYED. Если попытаться вставить данные в новую таблицу, когда все потоки INSERT DELAYED заняты, строка будет вставлена таким образом, как будто атрибут DELAYED не был указан.
  • max_heap_table_size Не позволяет создавать динамические таблицы, размер которых превышает указанное значение.
  • max_join_size Объединения, которые потенциально могут считывать более max_join_size записей, будут возвращать ошибку. Это значение нужно задавать, если ваши пользователи осуществляют объединения, которым недостает оператора WHERE, - такие объединения занимают много времени, а затем возвращают миллионы строк.
  • max_sort_length Параметр определяет, сколько байтов следует использовать при сортировке значений BLOB или TEXT (обрабатываются только первые max_sort_length байтов каждого значения, остальные игнорируются).
  • max_user_connections Максимальное количество активных соединений для одного пользователя (0 = без ограничений).
  • max_tmp_tables (Этот параметр пока ни на что не влияет.) Максимальное количество временных таблиц, которые клиент может открывать одновременно.
  • max_write_lock_count После данного количества блокирования записей разрешается выполнить между ними несколько блокировок чтения.
  • myisam_bulk_insert_tree_size В MySQL используется специальный древовидный кэш, чтобы быстрее производить групповые вставки (например INSERT ... SELECT, INSERT ... VALUES (...), (...), ... и LOAD DATA INFILE). Данная переменная ограничивает размер дерева кэша в байтах на поток. Если установить значение в 0, то оптимизация будет отключена. Примечание: этот кэш используется только для добавления данных к таблицам, которые уже содержат определенную информацию. По умолчанию установлено значение 8 Мб.
  • myisam_recover_options Значение параметра --myisam-recover.
  • myisam_sort_buffer_size Буфер, который выделяется для сортировки индексов при выполнении команды REPAIR или для создания индексов при помощи команд CREATE INDEX или ALTER TABLE.
  • myisam_max_extra_sort_file_size. Если размер временного файла, используемого для быстрого создания индексов, превышает на указанный здесь объем используемый кэш ключей, то лучше отдать предпочтение методу кэша ключей. Такой метод применяется для того, чтобы для больших ключей символов в больших таблицах использовался более медленный метод кэширования ключей при создании таблиц. Обратите внимание: значение этого параметра задается в мегабайтах!
  • myisam_max_sort_file_size Максимальный размер временного файла, который в MySQL может использоваться при восстановлении индекса (во время работы команд REPAIR, ALTER TABLE или LOAD DATA INFILE). Для файлов, размер которых превышает указанное значение, индекс будет создаваться при помощи кэша ключей (такой алгоритм работает несколько медленнее). Обратите внимание: значение этого параметра задается в мегабайтах!
  • net_buffer_length В данное значение устанавливается в промежутках между запросами буфер соединения. Обычно это значение не изменяется, но если у вас очень мало памяти, можно установить его по размеру ожидаемого запроса (т.е. равным предполагаемой длине операторов SQL, отправляемых клиентами; если оператор превысит указанную длину, буфер будет автоматически увеличен как максимум до max_allowed_packet байтов).
  • net_read_timeout Количество времени в секундах, на протяжении которого ожидаются дополнительные данные от соединения, пока не будет отменено чтение. Обратите внимание, что мы не ожидаем поступления данных от соединения, время ожидания определяется по write_timeout. Также см. slave_net_timeout.
  • net_retry_count Если чтение из порта связи было прервано, будет предпринято указанное количество попыток повторного чтения. Это значение должно быть достаточно высоким на FreeBSD, так как внутренние прерывания направляются на все потоки.
  • net_write_timeout Время ожидания записи блока через соединение, пока запись не будет прервана (в секундах).
  • open_files_limit Если это значение отлично от 0, то mysqld будет применять его для резервных дескрипторов файлов, используемых с setrlimit(). Если это значение равно 0, то mysqld будет резервировать max_connections*5 или max_connections + table_cache*2 (в зависимости от того, какое число больше) файлов. Если mysqld выдает ошибку 'Too many open files' (слишком много открытых файлов), данное значение необходимо увеличить.
  • pid_file Значение параметра --pid-file.
  • port Значение параметра --port.
  • protocol_version Версия протокола, используемого сервером MySQL.
  • record_buffer Каждый поток, осуществляющий последовательное сканирование, выделяет буфер указанного размера для каждой сканируемой таблицы. Если проводится много последовательных сканирований, это значение можно увеличить.
  • record_rnd_buffer При считывании строк после проведения сортировки в отсортированном порядке строки считываются через буфер, чтобы избежать операций поиска по диску. Если этот параметр не задан, то используется значение record_buffer.
  • query_buffer_size Изначальная величина буфера запросов. Если большинство запросов большого размера (например, при вставке записей с BLOB), его необходимо увеличить!
  • query_cache_limit Результаты, превышающие это значение, не кэшируются (по умолчанию - 1Мб).
  • query_cache_size Память, выделенная для хранения результатов старых запросов. Если значение установлено в 0, кэш запросов отключен (принято по умолчанию).
  • query_cache_startup_type Могут быть заданы следующие значения (только числовые):
    Значение Объяснение Примечание
    0 OFF Не кэширует и не извлекает результаты.
    1 ON Кэширует все результаты, кроме запросов SELECT SQL_NO_CACHE ....
    2 DEMAND Кэширует только запросы SELECT SQL_CACHE ....
  • safe_show_database Не отображаются базы данных, для которых у пользователя нет каких-либо привилегий по базам данных или таблицам. Таким образом можно увеличить степень безопасности, если вы не хотите предоставлять посторонним лицам возможность получать информацию о том, какие базы данных есть у других пользователей. Также см. skip_show_database.
  • server_id Значение параметра --server-id.
  • skip_locking Установлено в значение OFF, если mysqld использует внешнюю блокировку.
  • skip_networking Установлено в значение ON, если разрешаются только локальные соединения (через сокет).
  • skip_show_database Эта переменная не позволяет выполнять команду SHOW DATABASES, если у пользователя нет привилегии PROCESS. Таким образом можно увеличить степень безопасности, если вы не хотите предоставлять посторонним лицам возможность получать информацию о том, какие базы данных есть у других пользователей. Также см. safe_show_database.
  • slave_net_timeout Количество времени в секундах, в течение которого ожидаются дополнительные данные от подсоединенного головного или подчиненного компьютера прежде, чем будет отменено чтение.
  • slow_launch_time Если создание потока занимает больше, чем указанное значение (в секундах), значение счетчика Slow_launch_threads будет увеличено.
  • socket Сокет Unix, используемый сервером.
  • sort_buffer Каждый поток, которому необходимо произвести сортировку, выделяет буфер данного размера. Увеличение данного значения позволит ускорить выполнение операторов ORDER BY или GROUP BY. See section A.4.4 Где MySQL хранит временные файлы.
  • table_cache Количество открытых таблиц для всех потоков. С увеличением этого значения увеличивается количество дескрипторов файлов, необходимых для mysqld. Чтобы узнать, необходимо ли изменять значение кэша таблиц, следует проверить значение переменной Opened_tables. См. раздел See section A.4.4 Где MySQL хранит временные файлы. Если у этой переменной большое значение, а команда FLUSH TABLES (которая закрывает все таблицы, а потом открывает их повторно) используется не часто, то необходимо увеличить ее значение. Чтобы получить дополнительную информацию по кэшу таблиц, см. раздел See section 5.4.7 Открытие и закрытие таблиц в MySQL.
  • table_type Принятый по умолчанию тип таблиц.
  • thread_cache_size Определяет, сколько потоков должно сохраняться в кэше для повторного использования. После отключения клиента потоки клиента помещаются в кэш, если там не больше потоков, чем thread_cache_size. Все новые потоки сначала берутся из кэша, и только когда кэш становится пустым, создаются новые потоки. Значение этой переменной можно увеличить, чтобы повысить производительность, если создается много новых соединений (если потоки у вас хорошо организованы, обычно заметного улучшения производительности не наблюдается). Насколько эффективен текущий кэш потоков, можно определить по разнице между Connections и Threads_created.
  • thread_concurrency В системе Solaris mysqld вызывает функцию thr_setconcurrency() с этим значением. thr_setconcurrency() позволяет приложению дать системе потоков подсказку по необходимому количеству потоков, которые должны быть запущены в одно и то же время.
  • thread_stack Размер стека для каждого потока. От данного значения зависит большое количество ограничений, обнаруживаемых при помощи теста crash-me. По умолчанию этот размер достаточен для нормальной работы. See section 5.1.4 Набор тестов MySQL (The MySQL Benchmark Suite).
  • timezone Часовой пояс, в котором находится сервер.
  • tmp_table_size Если находящаяся в памяти временная таблица превысит этот размер, MySQL автоматически преобразует ее в дисковую таблицу MyISAM. Значение tmp_table_size следует увеличить, если выполняется много расширенных запросов GROUP BY и в вашей системе установлено значительное количество оперативной памяти.
  • tmpdir Каталог, используемый для временных файлов и временных таблиц.
  • version Номер версии сервера.
  • wait_timeout Время в секундах, на протяжении которого сервер ожидает активности соединения прежде, чем закрыть его. См. также interactive_timeout.

Раздел руководства, в котором описывается настройка MySQL содержит некоторую информацию по настройке приведенных выше переменных. See section 5.5.2 Настройка параметров сервера.


4.5.6.3 SHOW STATUS Оглавление 4.5.6.5 SHOW LOGS