Как автоматически удалить просроченную запись из базы данных? - PullRequest
0 голосов
/ 23 марта 2011

Мы создаем большую торговую площадку для торговли акциями и форекс, используя реляционную базу данных. В любой момент дня в нашей таблице «Заказы» будут тысячи, если не миллионы записей. Некоторые ордера, если они не выполнены немедленно, истекают и должны быть удалены из этой таблицы, в противном случае таблица растет очень быстро. Каждый заказ имеет срок годности. По истечении срока действия заказа его необходимо удалить. Попытка сделать это вручную, используя запланированное задание, которое сканирует и удаляет записи, очень медленная и снижает производительность системы. Нам нужно принудительно удалить запись.

Есть ли способ настроить любую базу данных СУБД для автоматического удаления записи на основе поля даты / времени, если время произошло в прошлом?

Ответы [ 3 ]

1 голос
/ 23 марта 2011

Поскольку вам, скорее всего, придется реализовать сложную обработку ордеров, например, лимитные ордера, стоп-лимитные ордера и т. Д., Вам нужен надежный механизм для мониторинга и исполнения ордеров в режиме реального времени .Этот процесс не ограничивается только просроченными заказами.Это основной механизм торговой платформы, и вам нужно будет разработать надежное решение, отвечающее вашим потребностям.

Чтобы ответить на ваш вопрос: удалите просроченные ордера как часть обычной обработки ордеров.

1 голос
/ 23 марта 2011

Почему строка должна быть удалена?

Я думаю, вы ставите телегу здесь, перед лошадью.Если срок действия строки истек, ее можно сделать «невидимой» для других частей системы разными способами, включая представления, которые показывают только заказы, соответствующие определенным критериям.Наличие лишних удаленных строк не должно снижать производительность, если ваша база данных соответствующим образом проиндексирована.

Какой уровень аудита и отслеживания необходим?Не проведен ли анализ по заказам с истекшим сроком?

Становятся ли выполненные заказы каким-то другим видом документа / объекта?

Во многих базах данных есть методы, позволяющие вам разбивать таблицы.Используя функцию разбиения, можно регулярно очищать разделы (например, одинаковые строки).

0 голосов
/ 23 марта 2011

Вы не указали, какую БД вы используете, но давайте предположим, что вы используете MSSQL, вы можете создать агентское задание, которое будет запускаться периодически, но вы говорите, что это может быть не решением для вас.

Так что насчет вставного триггера, который при вставке новой записи удаляет все записи, срок действия которых истек? Это позволит сохранить количество записей относительно небольшим.

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