Назад | Перейти на главную страницу

Что мне следует установить для начальных значений MySQL в My.cnf для повышения производительности?

Я просто настраиваю свой новый сервер Linux Ubuntu 8.04 LTS и готовлюсь к запуску. Мое приложение представляет собой приложение, созданное на PHP с использованием Zend Framework, и есть сайт с тяжелым MySQL (как, вероятно, большинство сайтов). Пока у меня только 1 сервер, и это полноценный LAMP-сервер.

Что мне интересно, так это то, что я должен установить эти значения (показаны значения по умолчанию), чтобы получить максимальную производительность (имея в виду, что этот же сервер также работает с apache и PHP). На моем сервере 4 ГБ ОЗУ. Я только вырезал необходимые значения из файла конфигурации, чтобы избежать путаницы.

Вот еще немного информации: Пока что все настройки установки по умолчанию (включая таблицы базы данных). Я ожидаю около 100 транзакций в секунду. Я не уверен, сколько оперативной памяти я могу выделить, поскольку на самом сервере также размещены apache и php, у меня есть 1 ГБ оперативной памяти и 4 ГБ с пакетной загрузкой (размещены на виртуальном сервере). В основном мой сайт будет показывать статические значения (сайт знакомств), однако он также будет обрабатывать транзакции от разных пользователей (сохранения, изменения и т. Д.).

Вот некоторые разделы моего файла my.cnf и их соответствующие значения ...

Любая помощь или понимание будут очень благодарны.

# Fine Tuning
key_buffer              = 16M
max_allowed_packet      = 16M
thread_stack            = 128K
thread_cache_size       = 8
#max_connections        = 100
#table_cache            = 64
#thread_concurrency     = 10

# Query Cache Configuration
query_cache_limit       = 1M
query_cache_size        = 16M

# Here you can see queries with especially long duration
log_slow_queries        = /var/log/mysql/mysql-slow.log
long_query_time = 2
log-queries-not-using-indexes

# BerkeleyDB
#
# Using BerkeleyDB is now discouraged as its support will cease in 5.1.12.
skip-bdb

# InnoDB
#
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!
# You might want to disable InnoDB to shrink the mysqld process by circa 100MB.
#skip-innodb

[isamchk]
key_buffer              = 16M

MySQLTuner:

MySQLTuner - это сценарий, написанный на Perl, который поможет вам с настройкой MySQL и даст рекомендации по повышению производительности и стабильности. Через несколько секунд он отобразит статистику вашей установки MySQL и областей, в которых ее можно улучшить.

Важно помнить, что MySQLTuner - это сценарий, который может помочь вам с вашим сервером, но это не решение проблемы плохо работающего сервера MySQL. Наилучший прирост производительности достигается за счет тщательного анализа запросов, отправляемых на сервер, и оценки самого сервера MySQL. Квалифицированный разработчик, владеющий языком программирования или сценариями вашего приложения, должен уметь работать с администратором базы данных MySQL, чтобы найти улучшения для вашего сервера. После того, как сервер и приложение будут хорошо оптимизированы, вам, возможно, придется подумать об обновлении аппаратного обеспечения самого физического сервера.

Людям, читающим эту тему, могут быть интересны следующие статьи:

  1. Что настраивать в MySQL Server после установки
  2. см. комментарии (извините, новый пользователь)

Значения по умолчанию обычно подходят для общего случая. Однако я не знаю, является ли ваш случай общим или нет.

Итак, сколько пользователей, сколько данных, сколько транзакций в секунду и т. Д. Вы ожидаете, что они должны иметь возможность обрабатывать?