Самый эффективный способ периодически удалять все записи в базе данных старше месяца - PullRequest
0 голосов
/ 03 декабря 2011

Я пытаюсь наиболее эффективно управлять таблицей базы данных и избавиться от старых записей, которые никогда не будут доступны. Да, они могли бы легко сохраняться в течение многих лет, но я просто хотел бы избавиться от них. Я мог бы делать это, может быть, один раз в месяц. Будет ли эффективнее скопировать записи, которые я хочу сохранить, в новую таблицу, а затем просто удалить старую таблицу. Или должен запрос вручную удалить каждую запись после того порога, который я установил.

Я использую MySQL с JPA / JPQL JEE6 с аннотациями сущностей и диспетчером персистентности Java.

Спасибо

Ответы [ 2 ]

1 голос
/ 03 декабря 2011

Другое решение - создать таблицу с диапазоном или списком PARTITIONING , а затем вы можете использовать ALTER TABLE для удаления или усечения старых разделов.

Это намного быстрее, чем использовать DELETE, но это может усложнить другое использование таблицы.

0 голосов
/ 03 декабря 2011

Один запрос на удаление будет наиболее эффективным решением.

Копирование данных из одной базы данных в другую может занять много времени, если у вас есть много данных для хранения. Это означает, что вам нужно извлечь все данные одним запросом (или несколькими, если вы хотите выполнить пакетную обработку) и выполнить много операторов вставки в другой базе данных.

Используя JPQL, вы можете выполнить один запрос для удаления всех старых операторов, например,

DELETE FROM Entity e WHERE e.date = ?

Это будет преобразовано в один запрос SQL, и база данных позаботится об удалении всех нежелательных записей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...