MySQL переменные настройки - текущие и значения по умолчанию - PullRequest
5 голосов
/ 04 ноября 2011

У меня довольно ванильная настройка MySQL 5.1, и я пытаюсь ее настроить.Я нашел этот удобный скрипт

Он сделал следующие предложения:

query_cache_limit (> 1M, or use smaller result sets)
query_cache_size (> 16M)
join_buffer_size (> 128.0K, or always use indexes with joins)
table_cache (> 64)
innodb_buffer_pool_size (>= 14G)

Читая о том, что они означают и к чему они в настоящее время настроены, я обнаружил, чтоЯ могу запустить «переменные mysqladmin»

Мои текущие значения:

query_cache_limit                       | 1048576  
query_cache_size                        | 16777216   
join_buffer_size                        | 131072     
innodb_buffer_pool_size                 | 8388608  

Как мне их прочитать, они являются килобайтами?так что это 1M, 16M, 13M и 8M?

В моем ящике всего 4 Гб оперативной памяти, и в обычный день памяти было всего несколько сотен мегабайт.Должен ли я следовать этим советам и делать:

#innodb_buffer_pool_size = 15G
#table_cache = 128
#join_buffer_size = 32M
#query_cache_size = 64M
#query_cache_limit = 2M

Я смущен 15G, это вопрос дискового пространства, а не памяти?Если это так, то рекомендации не очень хороши, верно?

Должен ли я получить больше памяти для своего ящика?

Дополнительная информация: - Мой размер базы данных составляет 34 Гб, я использую все innodb, у меня 71столы, 4 из них огромные, остальные маленькие.Я думал о переносе больших в SOLR и выполнении всех запросов оттуда, но хотел посмотреть, что я могу сделать с базовой настройкой.

спасибо Джоэл

1 Ответ

0 голосов
/ 05 ноября 2011

Не следует устанавливать буферный пул innodb выше, чем доступная память. Сценарий, вероятно, рекомендует это на основе количества записей в вашей таблице и их физического размера. Производительность Innodb очень сильно зависит от памяти, если она может соответствовать индексам в памяти, производительность будет быстро и заметно снижаться. Поэтому установка innodb_buffer_pool_size на высокий уровень - это почти всегда хороший совет.

Innodb не лучший тип таблиц для всего, что касается mysql. Очень большие таблицы, в которых обычно много вставок, но мало операций чтения и обновления (т. Е. Ведения журнала), лучше использовать в качестве таблиц MyISAM. Ваши очень активные таблицы (вставки, обновления, удаления, выборки) лучше от Innodb. По этому совету может быть пламенная война, и это общий совет.

Но, тем не менее, ни один скрипт не скажет вам, какими должны быть ваши настройки. Это может сделать только лучший гость. Лучшие настройки основаны на ваших шаблонах доступа к данным. Вы действительно должны прочитать о том, что все переменные. mysqlperformanceblog.com - отличное место для изучения mysql в дополнение к руководству.

В mysql используйте «show variable» и «show status», чтобы увидеть, что происходит. Вы также можете запустить «show innodb status», но вы можете не понимать этот вывод, если не знаете, что такое переменные.

...