поиск:
Полезные ссылки

  • Форум по MySQL

  • Статьи по MySQL

  • Вопросы по MySQL

  • MySQL.com


  • Базы данных

  • MySQL

  • PostgreSQL


  • PHP конференция 2005
    Подробности!

    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_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 расположена последней; в противном случае влияние любой опции, следующей после нее в командной строке, в данном выводе отражено не будет.

     
    © 1997-2005 PHP Club Team
    Rambler's Top100