![]() |
Стирание из MS SQL Server
Проблема такая:
Несколько таблиц в базе растут очень большими темпами. Ести программа, которая постоянно удаляет устаревшие записи, но она не успевает за ростом базы. Нужно сделать новую чтобы работала быстрее. Кто-нибудь может предложить способы ускорить этот процесс? :confused: Новая программа будет на C#. |
Что-то не понятно, как так не успевает? Всё происходит в реальном времени что ли? Т.е. куча данных одним процессом пишется в таблицу, а другим удаляется?
Объясни подробнее как всё работает во времени, сколько, когда и чего пишется, когда и как удаляется. |
Цитата:
А почему именно такая привязка, что следующая программа на C# будет? А какая база (то есть какая структура и какой СУБД вы пользуетесь)? |
А нельзя попытаться написать тригеры которые при добавлении новых записей будут определять старые и удалять?
|
Действительно, подробности не помешают.
Откуда вообще эти данные берутся? Точно ли удаляются и нельзя ли переделать исходную программу, которая заводит эти данные. Логику |
Цитата:
Цитата:
Еыть несколько программ, которые постоянно обрабатывают какие-то поступающие данные и пишут в несколько таблиц. Каким образом старая стирающая программа не успевает я даже не в курсе. Там пробовали затирать сразу все устаревшие записи - это заняло целый день и база тогда была гораздо меньше (записи за несколько месяцев). Так что нужно чтобы стирающая программа автоматически через определённое время мроверяла и стирала около тысячи старых записей (чтобы не очень долго). Есть мысль поставить на базе задание, которое раз в день выполняется. Или всётаки программу с вечным циклом писать. Цитата:
Цитата:
|
Цитата:
Полная очистка таблицы. Вариант (если такое радикальное средство не подходит) - держать 2 таблицы (или больше - по желанию). Обращение из пишущей проги - через алиас таблицы. И drop делать перед переключением алиаса с одной таблицы на другую (тогда отключаемая таблица будет доступна до следущего переключения). Переключение алиаса - по необходимости (хочешь - раз в сутки, хочешь - раз в столетие, хочешь - раз в минуту) средствами СУБД. Или другой вариант: (но требует доработки всех программ): пишущая прога пишет в таблицу Current_month, читающие работают с таблицами Current_month и Previous_month, раз в месяц делается удаление таблицы Previous_month, переименование Current->Previous и создание новой Current (можно, опять же, сделать разбивку хоть по дням, хоть по минутам, но это усложняет процедуру обновления таблиц). |
Цитата:
|
| Часовой пояс GMT +4, время: 18:38. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.