MySQL Config на большой машине
У нас есть сервер Windows 2003 Enterprise Edition (64-битный), работающий только на MySQL 5.1.45 64-битный. Он имеет 16G RAM и 10T места на жестком диске в RAID 10. У нас ужасная производительность от mysqld (загрузка ЦП 85-100%). Мы работали на меньшем компьютере с лучшей производительностью, поэтому я предполагаю, что наш файл my.ini не подходит для нашего текущего компьютера. Файл my.ini выглядит следующим образом:
[client]
port=3306
[mysql]
default-character-set=latin1
[mysqld]
port=3306
basedir="D:/MySQL/"
datadir="D:/MySQL/data"
default-character-set=latin1
default-storage-engine=MYISAM
sql-mode=""
skip-innodb
skip-locking
max_allowed_packet = 1M
max_connections=800
myisam_max_sort_file_size=5G
myisam_sort_buffer_size=500M
table_open_cache = 512
table_cache=8000
tmp_table_size=30M
query_cache_size=50M
thread_cache_size=128
key_buffer_size=3072M
read_buffer_size=2M
read_rnd_buffer_size=16M
sort_buffer_size=2M
#replication settings (this is the master)
log-bin=log
server-id = 1
Кто-нибудь видит что-то не так с этой настройкой? Для машины с таким большим количеством оперативной памяти, почему в мире mysqld съедает так много процессора? Я знаю, что мы можем оптимизировать некоторые запросы и т. Д., Но на маленькой машине он работал нормально, поэтому я уверен, что это конфигурация.
Заранее благодарю за любую помощь.
2 ответа
Вы используете таблицы innodb или myisam? Если вы используете InnoDB, вам следует установить размер пула буферов InnoDB. Это поможет кэшированием общих запросов в оперативной памяти. Как предлагает Exception, учитывая, что у вас 16 ГБ ОЗУ, вы должны попытаться настроить MySQL на использование 10-14 ГБ ОЗУ для кэширования общих наборов результатов и запросов.
MySQL Performance Blog - для получения дополнительной информации: http://www.mysqlperformanceblog.com/2007/11/03/choosing-innodb_buffer_pool_size/
Вы должны увеличить read_buffer_size и sort_buffer_size. Для машины с 16 ГБ ОЗУ нет причин устанавливать для них жалкий размер 2 МБ.