Размеры буферов, используемые по
умолчанию сервером mysqld,
можно узнать с помощью следующей
команды:
shell> mysqld --help
Эта команда выдает список всех
опций mysqld и
конфигурируемых переменных. Вывод
включает в себя величины по
умолчанию и выглядит примерно
следующим образом:
Possible variables for option --set-variable (-O) are: back_log current value: 5 bdb_cache_size current value: 1048540 binlog_cache_size current value: 32768 connect_timeout current value: 5 delayed_insert_timeout current value: 300 delayed_insert_limit current value: 100 delayed_queue_size current value: 1000 flush_time current value: 0 interactive_timeout current value: 28800 join_buffer_size current value: 131072 key_buffer_size current value: 1048540 lower_case_table_names current value: 0 long_query_time current value: 10 max_allowed_packet current value: 1048576 max_binlog_cache_size current value: 4294967295 max_connections current value: 100 max_connect_errors current value: 10 max_delayed_threads current value: 20 max_heap_table_size current value: 16777216 max_join_size current value: 4294967295 max_sort_length current value: 1024 max_tmp_tables current value: 32 max_write_lock_count current value: 4294967295 myisam_sort_buffer_size current value: 8388608 net_buffer_length current value: 16384 net_retry_count current value: 10 net_read_timeout current value: 30 net_write_timeout current value: 60 read_buffer_size current value: 131072 record_rnd_buffer_size current value: 131072 slow_launch_time current value: 2 sort_buffer current value: 2097116 table_cache current value: 64 thread_concurrency current value: 10 tmp_table_size current value: 1048576 thread_stack current value: 131072 wait_timeout current value: 28800
Не забывайте, что --set-variable
не используется в MySQL 4.0. Просто
указывайте --var=option.
Если сервер mysqld в
настоящее время работает, то для
того, чтобы увидеть, какие величины
реально используются для
переменных, необходимо выполнить
следующую команду:
shell> mysqladmin variables
Полное описание всех переменных
можно найти в разделе SHOW
VARIABLES этого руководства (see
Раздел 4.5.6.4, «SHOW VARIABLES»).
Некоторые статистические данные
по работающему серверу можно также
просмотреть с помощью команды
SHOW STATUS (see
Раздел 4.5.6.3, «SHOW STATUS »).
В MySQL используются алгоритмы, масштабируемые в широких пределах, так что обычно можно работать с очень небольшой памятью. Однако если выделить для MySQL больше памяти, то и производительность, как правило, будет выше.
При настройке сервера MySQL наиболее
важными из используемых являются
две переменные key_buffer_size
и table_cache. Но прежде чем
пытаться изменить ту или иную
переменную, вначале следует
убедиться, что вы обладаете
необходимыми для этого правами.
Если имеется большая память (>=256 Mб) и много таблиц, то для обеспечения максимальной производительности путем регулирования количества клиентов следует использовать что-нибудь вроде этого:
shell>safe_mysqld -O key_buffer=64M -O table_cache=256 \-O sort_buffer=4M -O read_buffer_size=1M &
Если память составляет только 128 Mб и количество таблиц невелико, но тем не менее, выполняется много сортировок, то можно использовать что-нибудь вроде:
shell> safe_mysqld -O key_buffer=16M -O sort_buffer=1M
При малой памяти и большом количестве соединений следует использовать что-нибудь вроде следующего:
shell>safe_mysqld -O key_buffer=512k -O sort_buffer=100k \-O read_buffer_size=100k &
или даже:
shell>safe_mysqld -O key_buffer=512k -O sort_buffer=16k \-O table_cache=32 -O read_buffer_size=8k \-O net_buffer_length=1K &
Если выполняются операции GROUP
BY или ORDER BY на
файлах, которые намного больше, чем
доступная память, то следует
увеличить величину
record_rnd_buffer для ускорения
чтения строк после выполнения
сортировки.
После установки MySQL каталог
support-files будет содержать
несколько различных
файлов-примеров my.cnf, а
именно: my-huge.cnf,
my-large.cnf,
my-medium.cnf и
my-small.cnf, которые можно
использовать как основу для
оптимизации вашей системы.
Если демон mysqld не
отконфигурирован для
использования очень малой памяти
для каждого соединения, то в
условиях очень большого
количества соединений могут
возникнуть проблемы с подкачкой
виртуальной памяти. При наличии
достаточной памяти для всех
соединений mysqld, конечно,
будет функционировать лучше.
Следует учитывать, что при
изменении какой-либо опции для
mysqld это изменение
действительно только для данного
экземпляра сервера.
Чтобы увидеть воздействие изменения параметра, нужно выполнить что-нибудь вроде этого:
shell> mysqld -O key_buffer=32m --help
Следует удостовериться, что опция
--help расположена
последней; в противном случае
влияние любой опции, следующей
после нее в командной строке, в
данном выводе отражено не будет.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.
© 1995-2005 MySQL AB. All rights reserved.
