Конфигурационные параметры по умолчанию в Mysql расчитаны на небольшие базы данных, работающие под малыми наргузками на весьма скромном железе. Если Ваши планы насчет Mysql выходят за границы таблиц на несколько сотен записей, Вам обязательно придется менять настройки по умолчанию. Процесс оптимальной настройки Mysql состоит из двух частей - первоначальная настройка и корректировака параметров во время работы. Корректировка параметров в рабочем режиме во многом зависит от специфики Вашей системы и ее мониторинга - тут особых правил не существует. Для стартовой настройки есть ряд рекомендаций:
MySQL — свободная система управления базами данных. Разработку и поддержку MySQL осуществляет корпорация Oracle, получившая права на торговую марку вместе с поглощённой Sun Microsystems, которая ранее приобрела шведскую компанию MySQL AB. Продукт распространяется как под GNU General Public License, так и под собственной коммерческой лицензией. Помимо этого разработчики создают функциональность по заказу лицензионных пользователей, именно благодаря такому заказу почти в самых ранних версиях появился механизм репликации.
Откройте файл настроек mysql, например:
/etc/mysql/my.cnf
Сымае распространенные параметры, на которые стоит обратить внимание и изменить под Ваши требования:
key_buffer_size
Если Вы используете только MyIsam таблицы, устанавливайте это значение в 30%…40% всей доступной оперативной памяти на сервере. MyIsam использует кеш операционной системы для данных, поэтому учтите, что оставшаяся свободная память понадобится именно для этого. Если же MyIsam таблиц у Вас немного и их совокупный размер маленький - оставьте это значение в пределах 32M.
innodb_buffer_pool_size
Если Вы использутете только InnoDB таблицы, устанавливайте это значение максимально возможным для Вашей системы. Буффер InnoDB кеширует и данные и индексы (а кеш операционной системы не используется), поэтому значение этого ключа стоит устанавливать в 70%…80% доступной памяти.
Если Ваш сервер работает на линкусе или юниксе, не забудьте установить параметр innodb_flush_method в значение “O_DIRECT”, что-бы избежать кеширования на уровне ОС того, что уже кеширует Mysql.
innodb_log_file_size
Обратите внимание на этот параметр, если у Вас предусматривается большой показатель записей. Чем больше размер этого ключа, тем более эффективно будет происходить запись данных. Но учтите, что при этом увеличится время восстановления системы! Этот параметр обычно устанавливают в 64M-512M.
innodb_flush_log_at_trx_commit
Этот параметр в значительной степени влияет на скорость работы (записи) innoDB таблиц.
Значение “1? означает, что любая завершенная транзакция будет синхронно сбрасывать лог на диск.
Значение “2? делает то же самое, только сбрасывает лог не на диск, а в кеш операционной системы. Это значение подойдет в большинстве случаев, т.к. не выполняет дорогой операции записи после каждой транзакции. При этом лог пишется на диск с задержкой в несколько секунд, что весьма безопасно с точки зрения сохранности данных.
Значение “0? даст наибольшую производительность. В этом случае буфер будет сбрасывать в лог файл независимо от транзакций. Устанавливайте этот параметр в “0? на свой риск, т.к. в этом случае риск потери данных возрастает.
table_cache
Этот ключ определяет память, выделяюмую для хранения открытых таблиц. Если у Вас несколько сотен таблиц, устанавливайте это значение в 1024. Если же у Вас огромное количество соединений, увеличивайте постепенно это значение, т.к. для каждого соединения храниться отдельная запись.
thread_cache
Этот параметр помагает избежать операций создания/уничтожения потоков при соединении к серверу. Установите этот параметр в 16 и наращивайте по мере потребности. Проверяйте показатель “Threads_created”, идеально он должан быть равным нулю:
mysql> show status like ‘threads_created’;
+—————–+——–+
| Variable_name | Value |
+—————–+——–+
| Threads_created | 423312 |
+—————–+——–+
query_cache_size
Значение этого параметра определяет сколько памяти стоит использовать под кеш запросов. Не увлекайтесь установкой огромных значений. Кеш запросов не должен быть большим, т.к. mysql будет съедать ресурсы на управление данными в кеше. Начните с 32М…128М, и увеличивайте по мере необходимости.