MySQL: основы производительности
MySQL поставляется с несколькими готовыми конфигурационными файлами для разных задач и разных серверов. К сожалению, многие этого не знают и работают с настройками по умолчанию. Это неправильно!
Готовые конфигурации
В каталоге /usr/share/doc/mysql-server-x.x.xx/ лежат следующие файлы:
- my-small.cnf — для систем с малым обьемом памяти (<=64Mb), в которых MySQL используется редко.
- my-medium.cnf — если памяти мало (32-64Mb) или MySQL используется совместно с другими приложениями (например Apache) и памяти около 128Mb.
- my-large.cnf, my-huge.cnf — для систем с большим обьемом памяти (512Mb, 1-2Gb), где MySQL играет главную роль.
- my-innodb-heavy-4G.cnf — 4Gb памяти, InnoDB, MySQL играет главную роль.
Наиболее оптимальным вариантом для VPS начального уровня будет my-medium.cnf. Перенесите следующие параметры из секции [mysqld] этого файла в /etc/my.cnf:
[mysqld] port = 3306 socket = /var/lib/mysql/mysql.sock skip-locking key_buffer = 16M max_allowed_packet = 1M table_cache = 64 sort_buffer_size = 512K net_buffer_length = 8K read_buffer_size = 256K read_rnd_buffer_size = 512K myisam_sort_buffer_size = 8M
Также можно добавить в конец /etc/my.cnf опцию ведения лог-файла ошибок:
[mysqld_safe] err-log=/var/log/mysqld.log
Позже, как только появится возможность, обязательно изучите, что означают все эти параметры. Скорее всего, изменив их в соответствии с вашей задачей, удастся сэкономить немного ресурсов или получить ещё больший прирост в производительности.
InnoDB, BDB
Если вы не используете таблицы типа InnoDB и BDB, лучше отключить эти хранилища данных. Так вы сэкономите немного памяти. Это особенно важно, если вы владелец VPS.
Добавьте в секцию [mysqld] строки:
skip-innodb skip-bdb
TCP или Unix Socket
Есть два варианта взаимодействия программ и скриптов с MySQL: через протокол TCP/IP (по умолчанию порт 3306) и через Unix Socket (обычно — /var/lib/mysql/mysql.sock). Во втором случае программы общаются с СУБД минуя сетевую подсистему ОС, что, по разным данным, дает прирост в производительности около 8%. Кроме того, поскольку MySQL перестает использовать порт 3306, исчезает ещё одна причина для беспокойства о безопасности сервера.
Просто укажите в секции [mysqld] параметр:
skip-networking
Ссылки
Статьи
Форум
Реклама
Удаленное администрирование, поддержка nginx, тюнинг и настройка выделенного сервера.
