5.5. Оптимизация сервера MySQL
5.5.2. Настройка параметров сервера
Размеры буферов, используемые по умолчанию сервером 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_sizecurrent 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_timeoutcurrent 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_sizecurrent value: 4294967295
max_connections current value: 100
max_connect_errors current value: 10
max_delayed_threadscurrent value: 20
max_heap_table_sizecurrent value: 16777216
max_join_sizecurrent 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_lengthcurrent value: 16384
net_retry_count current value: 10
net_read_timeout current value: 30
net_write_timeoutcurrent value: 60
read_buffer_size current value: 131072
record_rnd_buffer_size current value: 131072
slow_launch_time current value: 2
sort_buffercurrent value: 2097116
table_cachecurrent 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 расположена последней; в противном случае влияние любой опции, следующей после нее в командной строке, в данном выводе отражено не будет.
Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
|