оптимизация my.cnf согласно конфигурации - PullRequest
0 голосов
/ 03 мая 2018

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

У меня есть выделенный сервер со следующей конфигурацией:

8 ЦП Intel (R) Xeon (R) E3-1240 v6 @ 3,70 ГГц
16 ГБ DDR3
ТАК Linux с cPanel / WHM + MySQL

Ниже приведен файл my.cnf:

[mysqld]
max_connections=1000
wait_timeout=1000
interactive_timeout=1000
long_query_time=50
slow_query_log = 0
#slow_query_log_file = /var/log/mysql/slow-query.log

default-storage-engine=MyISAM
log-error=/var/lib/mysql/dc.leilaoweb.com.err
max_allowed_packet=268435456
local-infile=0
event_scheduler = on
tmp_table_size=300M
max_heap_table_size=128M
open_files_limit=65000
performance-schema=1

innodb_file_per_table=1
innodb_log_file_size=512M
innodb_buffer_pool_size=8G
key_buffer_size=512M
innodb_buffer_pool_instances=8

# config cache
query_cache_limit=8M
query_cache_size=256M
query_cache_type=1
table_open_cache=6000
table_cache=5000
thread_cache_size=96

#bind-address=127.0.0.1
#skip-networking
#performance_schema=ON

skip-name-resolve

Как можно улучшить этот параметр, чтобы ускорить запросы и не увеличивать нагрузку на сервер?

1 Ответ

0 голосов
/ 03 мая 2018

Забавный вопрос, требующий помощи в оптимизации запросов, в котором не упоминается конкретный запрос.

Вот несколько советов по настройке параметров:

default-storage-engine=MyISAM

Измените механизм хранения по умолчанию на InnoDB и убедитесь, что все ваши существующие таблицы InnoDB. Не используйте MyISAM.

query_cache_size=256M
query_cache_type=1

Установите размер и тип кэша запросов равным 0. Кэш запросов полезен в таких редких случаях, что он устарел и удаляется в MySQL 8.0. Лучше кэшировать результаты запросов в коде вашего приложения в каждом конкретном случае.

innodb_buffer_pool_size=8G

Если у вас намного больше данных, чем 8G, рассмотрите возможность увеличения размера буферного пула. Чем больше ваших данных и индексов находится в оперативной памяти, тем лучше для производительности. Но нет никакой дополнительной выгоды от добавления оперативной памяти, когда ваши данные и индексы кэшируются на 100% в пуле буферов.

И, конечно, не перераспределяйте буферный пул так, чтобы он начал перестановку сервера. Это снизит производительность (иначе OOM killer в Linux прекратит работу mysqld, если у вас нет свопа).

key_buffer_size=512M

Нет необходимости в дополнительной памяти, выделенной для буфера ключей, если вы не используете MyISAM.

Могут быть и другие параметры настройки, которые могут принести пользу, но, поскольку вы ничего не сказали о своих запросах или активности сервера, нет никакого способа угадать, какими они будут.

Вам лучше сосредоточиться на индексах и дизайне запросов.

В целом оптимизация естественным образом улучшает некоторые запросы за счет других запросов. Таким образом, вы можете разработать стратегию оптимизации только после того, как знаете, какие запросы нужно оптимизировать.

...