Внимание! Перед выполнением любых действий с
БД UTM5 в обязательном порядке следует сделать полную резервную копию БД UTM5
и проверить возможность восстановления данных из этой резервной копии.
Дальнейший текст предназначен только для тех, кто понимает, что делает, и имеет
достаточный уровень технических знаний в области работы с СУБД. Вопросы
касательно способов манипуляции данными средствами СУБД останутся без ответа
по существу, в том числе и если они будут заданы в hotline. Перед
проведением любых действий рекомендуется отработать их на стендовой машине
Архивирование применяется к определённым наиболее быстро растущим таблицам
с целью снизить накладные расходы на операции вставки.
В ходе архивирования таблица переносится (переименовывается) в архивную, и одновременно
создаётся пустая (текущая) таблица с первоначальным названием и с той же структурой
для вновь поступающих данных.
Операция может применяться периодически по мере роста таблиц.
Ограничения описаны ниже.
- В настоящий момент механизм архивирования распространяет свое действие на
таблицы, перечисленные ниже:
| Таблица | Тип | Название поля даты |
| discount_transactions_all | 1 | discount_date |
| discount_transactions_iptraffic_all | 2 | discount_date |
| tel_sessions_log | 3 | recv_date |
| tel_sessions_detail | 4 | recv_date |
| dhs_sessions_log | 5 | recv_date |
| dhs_sessions_detail | 6 | recv_date |
| payment_transactions | 7 | payment_enter_date |
- Транзакции списаний за трафик являются подмножеством транзакций
изменения балансов лицевых счетов, поэтому записи в указанных выше таблицах связаны.
Если для записи в таблице discount_transactions_all
установлен service_type, равный 3, то должна существовать запись
с таким же id, discount_date и discount в
таблице discount_transactions_iptraffic_all.
Невыполнение данного условия считается нарушением логической целостности БД.
- Начиная со сборки 5.2.1-006, существует таблица archives со следующими
полями:
- id уникальный идентификатор записи;
- archive_id идентификатор архива, не может быть равен 0,
должен быть идентичен для всех таблиц, архивируемых одновременно;
- table_type тип архивной таблицы (см. выше);
- table_name имя архивной таблицы;
- start_date время, которым датировано первое списание в архиве (UNIX TIMESTAMP);
- end_date время, которым датировано последнее списание в архиве (UNIX TIMESTAMP);
Все архивные таблицы должны быть перечислены в таблице archives.
- Каждая архивная таблица должна иметь такую же структуру, как и
соответствующая текущая таблица в установленной сборке.
- Каждая архивная таблица должна содержать все данные, датированные временем,
входящим в диапазон, указанный в соответствующей записи в таблице archives,
и только эти данные.
- Все данные за время, не покрытое архивными таблицами,
должны содержаться в текущих таблицах.
- Архивирование должно происходить одновременно для всех типов таблиц, к которым оно применимо.
Создваваемые одновременно архивные таблицы должны иметь одинаковые
start_date, end_date и archive_id.
- В UTM сборки 5.2.1-006 архивирование применялось только к таблицам
discount_transactions_all и discount_transactions_iptraffic_all.
Использование архивных таблиц, созданных для этой сборки, требует
архивирования "задним числом" всех остальных таблиц, к которым оно применимо.
Т.е. для каждой из них должны быть созданы архивные таблицы по тем
же периодам времени, и данные за эти периоды перенесены в эти таблицы.
Наименование полей таблиц, содержащих дату, см. выше.
- Для облегчения ручной обработки (в случае надобности)
рекомендуется давать архивным таблицам интуитивно понятные имена,
например, имя_основной_таблицы_метка, где метка timestamp (отметка времени) создания архивной таблицы.
- Архивная таблица может не поддерживать транзакции и быть доступна в
режиме только чтения.