2016-12-23 8 views
0

У меня размер БД MySQL 1 ГБ, работающий на выделенном сервере с 4C/4T, 8 ГБ RAM и SSD-накопителем.Настройка конфигурации MySQL для 1G DB, 8GB Ram

Мой сайт имеет более 200 000 статей, а при использовании функций поиска (SELECT-запросы) он медленно или не реагирует на то, что мне нужно, чтобы убить процессы с моей панели WHM.

Я просил поддержки сегодня, чтобы показать мне файл my.conf, и, как я вижу, он работает по умолчанию. Вот данные:

max_connections = 150 
max_user_connections = 100 
query_cache_size = 64M 
skip-external-locking 
key_buffer_size = 64M 
max_allowed_packet=268435456 
table_open_cache = 256 
sort_buffer_size = 1M 
net_buffer_length = 16K 
read_buffer_size = 1M 
read_rnd_buffer_size = 1M 
myisam_sort_buffer_size = 32M 
innodb_file_per_table 
tmp_table_size = 64M 
max_heap_table_size = 64M 
thread_cache_size = 8 
query_cache_type = on 

# This setting allows the use of asynchronous I/O in InnoDB. 
# The following files track usage of this resource: 
# - /proc/sys/fs/aio-max-nr 
# - /proc/sys/fs/aio-nr 
# Default limit is 65536, of which a single instance of mysql uses 2661 out of the box 
innodb_use_native_aio = 1 
default_storage_engine = MyISAM 
open_files_limit=10000 

В заданных значений, я не вижу присутствие innodb_buffer_pool_size, и парень из поддержки спросил бы я хотел, чтобы добавить его в my.conf. Я читал, что это важная ценность, поэтому, вероятно, ее следует добавить?

Самые большие таблицы в моей БД - InnoDB, а MyISAM - механизм хранения по умолчанию.

Какова будет рекомендованная конфигурация здесь и какие значения необходимо будет скорректировать для достижения оптимальной производительности?

В my.cnf есть что-то еще, например innodb_buffer_pool_size или innodb_log_file_size?

+1

Скорее всего, проблема не связана с конфигурационным файлом. Я бы посмотрел на SQL-запросы, которые занимают слишком много времени и запускают команду EXPLAIN. Некоторые индексы могут отсутствовать, что приводит к полному сканированию таблицы. Вторая самая популярная ошибка - чтение всего большого набора результатов SELECT в ОЗУ за один раз с помощью fetchall() или эквивалентного. –

+0

@MikeBessonov Запросы в основном предназначены для того, чтобы функция поиска выполняла фактический поиск. Я могу использовать FULLTEXT вместо LIKE для некоторых запросов, но это может привести к тому, что я потеряю подстановочные знаки, что является важной частью поиска моего сайта. По этой причине я думал, что для того, чтобы настройка базы данных имела лучшую производительность, определенно повлияет на производительность сайта в целом. –

+0

Можете ли вы определить SQL-запрос, который слишком долго выполняется? –

ответ

1

Вы не можете «настроить свой выход из проблем с производительностью», но вот настройки для изменения:

key_buffer_size = 800M 
innodb_buffer_pool_size = 1500M 

InnoDB предпочтительно MyISAM. (Если вы измените, тогда потребуются дополнительные изменения.)

Какая версия вы используете?

Обычно производительность зависит от индексов и формулировки запросов. Давайте посмотрим на медленный запрос вместе с SHOW CREATE TABLE для его таблиц.

0.0002sec похоже, что он был найден в кеше запросов. Запускайте таким образом: SELECT SQL_NO_CACHE ..., чтобы избежать нереалистичных сумм.

0

Для таблиц MyISAM:

key_buffer_size = должно быть от 20% до 30% физически RAM памяти. Рассчитайте в соответствии с вашим 8 ГБ оперативной памяти.

Я хотел бы предложить вам изменить двигатель MYSQL для InnoDB

Третий один: Ваш запрос медленно из-за отсутствия индексов или оптимизации запросов. USE EXPLAIN планируйте запрос и оптимизируйте в соответствии с ним, добавив индекс в таблицу.

 Смежные вопросы

  • Нет связанных вопросов^_^