Какие оптимальные настройки my.cnf для 320мб

MySQL, PostgreSQL, InterBaseSQL etc

Модераторы: Art.i, vasya

Какие оптимальные настройки my.cnf для 320мб

Сообщение Brut » Сб ноя 08, 2008 7:46 pm

query_cache_limit=524K
query_cache_size=10M
query_cache_type=1
thread_cache_size=128

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

это много? или мало? - судя по тормозам моего сайта явно мало. :(
Brut
 
Сообщений: 3
Зарегистрирован: Вс май 11, 2008 12:26 am

Сообщение John_Lepikhin » Сб ноя 15, 2008 10:04 am

Начинать надо с построения правильной структуры базы. Затем добавьте в узких местах индексы. Помните, что каждый новый индекс значительно тормозит обновления и вставки. Поэтому может оказаться, что после добавления индекса всё стало даже медленнее. Затем включите лог медленных запросов. Это позволит вам выяснить, какие запросы ещё нуждаются в оптимизации.

А после этого уже беритесь за настройки в my.cnf. Надо смотреть на конкретный случай. Универсальных оптимальных настроек не существует. Пусть MySQL поработает хотя бы несколько часов без перезапуска. После этого скажите:

show global status;

В выводе обратите внимание на следующие вещи:

Qcache_free_memory — если значение менее 60% от query_cache_size, то последний можно смело уменьшить.

Key_read_requests, Key_reads. Первое обозначает, сколько запросов на чтение ключа было. Второе — сколько раз фактически ключи читались с диска (т.е. брались не из кэша). В идеале, первое должно быть больше второго в 1000-5000 раз. Если это не так, уменьшите или увеличьте key_buffer.

Select_scan — сколько выборок (запросов с where) было произведено последовательным чтением таблицы. Если значение близко к Questions (общее количество запросов с момента последнего перезапуска) — возможно, имеет смысл где-то добавить индексов.

Max_used_connections — переводить не надо. Тут стоит пояснить, сколько примерно занимает одно активное соединение в памяти. Это sort_buffer_size + read_buffer_size. Соответственно, если у вас никогда не используется более 10 соединений, можно смело дать им много памяти на сортировку и прочие операции. Это значительно сократит количество дисковых операций при тяжёлых больших сортировках. И наоборот, если у вас в пиках бывает 200 соединений, надо рассчитывать, что может быть занято 200 * (256K + 512K) = 150Mb чисто на соединения.

Open_tables — при открытии таблицы, помимо создания файловых хэндлеров, MySQL читает статистику о табличке, права и т.д. Всё это относительно тяжёлые операции, которые можно закэшировать. За это отвечает параметр table_cache. Информация об одной таблице занимает ~5..60Kb. Если у вас Open_tables равна table_cache, имеет смысл увеличить значение. 64 — достаточно маленькое значение, до 256..512 можете увеличивать не задумываясь.

Большая часть вещей касается только MyISAM. Если у вас InnoDB или другой движок, то там всё совсем по-другому. Рассказывать можно долго, параметров много. Для начала, посмотрите блог Петра Диденко ( http://mysqlperformanceblog.com ).

Немного скажу, как увеличить процент закэшированных запросов. MySQL никогда не кэширует запросы, в которых встречается now(), rand(), date() и прочие функции, значение которых зависит от окружения. Не используйте их в запросах, эффективность кэша резко возрастёт. Например, вместо now() и date() можно скриптом подставить готовое значение.
John_Lepikhin
Консультант
 
Сообщений: 63
Зарегистрирован: Вс май 29, 2005 6:43 am

Сообщение Steelk » Пн дек 15, 2008 2:37 pm

В помощь всем с тюнингом mysql параметров.

Однажды для себя нашел полезный скрипт, он смотрит текущие настройки, лазит по mysql логу смотрит на ошибки.

Скрипт о описание лажат тут:
http://www.day32.com/MySQL/

прямой линк на скрипт:
http://www.day32.com/MySQL/tuning-primer.sh

Скрипт безопасный но не мой, никакого отношения к сайту не имею, запускать или не запускать решать вам.

------------------

Упс, он не работает на FreeBSD, нужно что-то подправить. Попробую сделать.
Steelk
 
Сообщений: 2
Зарегистрирован: Пн дек 15, 2008 11:00 am


Вернуться в Базы данных

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4