понедельник, 10 октября 2016 г.

Разбиение таблицы MYSQL на несколько



Вот и настал тот день когда база логов звонков разрослась до 1TB. На мой взгляд чтобы не терять историю надо таблицу CDR разбить например по годам(а вдруг пригодятся).
Что я сделал:
1) создал таблицы

  • cdr2014
  • cdr2015
  • cdr2016
2) Экспортировать данные из CDR в cdr2014


INSERT INTO  `asterisk`.`cdr2014` SELECT * FROM  `asterisk`.`cdr` WHERE  `calldate` <  '2014-12-31 23:59:59'

3) Экспортировать данные из CDR в cdr2015



INSERT INTO  `asterisk`.`cdr2015` SELECT * FROM  `asterisk`.`cdr` WHERE  `calldate` <  '2015-12-31 23:59:59'

4) Экспортировать данные из CDR в cdr2016


INSERT INTO  `asterisk`.`cdr2016` SELECT * FROM  `asterisk`.`cdr` WHERE  `calldate` <  '2016-12-31 23:59:59'
5) Удаляем по годам

2014
DELETE FROM `asterisk`.`cdr` WHERE  `calldate` <  '2014-12-31 23:59:59'
2015
DELETE FROM `asterisk`.`cdr` WHERE  `calldate` <  '2015-12-31 23:59:59'
2016
DELETE FROM `asterisk`.`cdr` WHERE  `calldate` <  '2016-12-31 23:59:59'

6) Оптимизировать таблицы
OPTIMIZE TABLE  `cdr` ,  `cdr2014` ,  `cdr2015`,  `cdr2016`

Комментариев нет:

Отправить комментарий