Этот скрипт делает две вещи. Во-первых, выводит информацию о том, сколько данных хранится в таблице и по каким переменным и, во-вторых, оптимизирует (объединяет) устаревающие данные по определённому алгоритму.
Предупреждение: перед началом экспериментов с этим скриптом, сохраните резервную копию таблицы phistory, на всякий случай.
Скрипт нужно распаковать из архива и положить в папку /htdocs/scripts/ и вызывать http://адрес_сервера/scripts/optimize_history.php
Для работы скрипта надо в коде раскоментировать массив $rules, где задаются параметры оптимизации свойств класса
Вот пример моего массива:
Код: Выделить всё
$rules=array(
'tempSensors.temp'=>array('optimize'=>'avg'), // оптимизировать значения свойства temp всех объектов класса tempSensors по среднему значению
'uptime'=>array('keep'=>30, 'optimize'=>'max'), // удалять данные свойства uptime (любого класса), старше 30 дней и оптимизировать остальные по максимальнму значению
'Relays.status'=>array('keep'=>0), // удалять все данные Relays.status, попавшие в историю
'WeatherStations.tempOutside'=>array('optimize'=>'avg') // оптимизировать все данные WeatherStations.tempOutside по среднему значению
);
Сейчас используется следующаяя "этапность" оптимизации:
1. Данные старше 1 месяца оптимизируются по двух-часовым отрезкам (если за каждые два часа в базе больше чем одно значение, то они все заменяются одним по указанному алгоритму оптимизации -- среднему за период, максимальному, либо сумме значений)
2. Данные старше 1 недели (но младше месяца) оптимизируются по часовым отрезкам.
3. Старше суток (но младше недели) оптимизируются по 20-минутным отрезкам
4. Старше часа (но младше суток) по 3-х минутным отрезкам
5. Младше часа не оптимизируются
В общем, я смог сократить таблицу phistory с 250 000 значений до 60 000, что, теоретически, ускоряет работу системы в целом (особенно построение графиков).
Скрипт этот не готовый рецепт и его лучше использововать как основу для собственных экспериментов, но, в принципе, можно и использовать как есть, подставляя только желаемые классы/свойства в блок правил. А можно вообще ничего не править и запустить, чтобы посмотреть статистику использование phistory.