Оптимизация базы данных CDR в MySQL

от автора

Рано или поздно, но база CDR разрастается до значительных размеров. Существует несколько довольно простых способов её оптимизировать.

1. Обновите MySQL. Каждая новая версия быстрее предыдущей. Вопрос обновления выходит за рамки темы, но напоминаю — при прыжках «через версию» оптимально выгрузить всю базу и загрузить заново на чистую установку, иначе возможны сюрпризы.

2. Оптимизируйте InnoDB. В конфиге my.cnf рекомендую следующие настройки:

innodb_buffer_pool_size = 256M ; Рекомендую установить здесь значение, равное половине RAM вашего сервера innodb_file_format = Barracuda ; Более новый формат БД. Пригодится далее. innodb_buffer_pool_instances = 1 ; Если у вас не больше гигабайта выделено под буферный пул, ставьте единицу. innodb_change_buffer_max_size=10 ; В CDR связаны мы мало пишем и много читаем. Буфер на запись ставим небольшой. innodb_flush_log_at_trx_commit=2 ; Дополнительная буферизация при записи ценой риска потери пары последних записей в случае краха 

3. Смените движок на InnoDB

ALTER TABLE cdr ENGINE=InnoDB; 

4. Отключите performance schema если её не используете

performance_schema=OFF 

5. Включите кэширование запросов

query_cache_type=1 query_cache_size=128M 

6. Партиционируйте таблицу, создав 12 разделов, по одному на месяц года.

ALTER TABLE cdr PARTITION BY HASH (month(calldate)) PARTITIONS 12; 

7. Перейдите на сжатый формат, если у вас механический, а не SSD диск. Для этого и нужен формат Barracuda.

ALTER TABLE cdr ROW_FORMAT=COMPRESSED; 

Рекомендации актуальны для MySQL 5.6

ссылка на оригинал статьи http://habrahabr.ru/post/265221/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *