У меня есть очень простая таблица на Oracle 10g, которая хранит сообщения журнала от процесса. Эта таблица генерирует около 1 ГБ в день. Я хотел бы сохранить только 1 неделю данных.
Каков наилучший подход для достижения этой цели? Создать процедуру, которая постоянно удаляет старые данные? Нужно ли использовать разделы?
Я могу удалить / усечь / удалить всю таблицу, если это необходимо.
Это таблица:
CREATE TABLE "TABLE_LOGS"
(
"TABLE_ID" VARCHAR2(200 BYTE),
"TABLE_NUMBER" NUMBER(19,0),
"DESCRIPTION" VARCHAR2(2000 BYTE),
"DATE" TIMESTAMP (6),
"TYPE" VARCHAR2(100 BYTE),
"LEVEL" NUMBER(*,0)
)
2 ответа
Это не обязательно, но разделение может быть эффективной стратегией. Термин Управление жизненным циклом информации (ILM) часто используется. Если вы создаете диапазон таблиц, разделенных по дням, вы можете просто обрезать / удалить самый старый раздел, чтобы у вас было только 7 (или 8) активных разделов. Преимущества этого
- Обрезать / удалить раздел будет быстрее, чем удалить
- У вас будет лучшее управление пространством.
- Создайте индекс по вашему столбцу дат (если его там еще нет).
- Ночная работа должна выполнить следующий SQL:
Удалить table_logs, где date> sysdate - 7;
Совершить ;
Это должно занять менее 1 минуты, если ваша БД хорошо настроена.
Похожие вопросы
Новые вопросы
oracle
Oracle Database - это многомодельная система управления базами данных, созданная корпорацией Oracle. НЕ используйте этот тег для других продуктов, принадлежащих Oracle, таких как Java и MySQL.