Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Удаление записей из таблицы в определенное время  [new]
plorkie
Member

Откуда:
Сообщений: 31
Добрый вечер, всем!

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

Появилась необходимость хранить данные в этой таблице в определенный промежуток времени, т.е допустим с 00:00 до 08:00 am таблица наполняется данными (без предварительного удаления), в оставшееся время таблица, как было изначально чистится и затем наполняется.

Подскажите пжст, с помощью чего это оптимальней сделать? Были мысли это осуществить с помощью waitfor delay и с помощью цикла, но пока не могу до конца додумать.
2 июл 19, 22:21    [21919494]     Ответить | Цитировать Сообщить модератору
 Re: Удаление записей из таблицы в определенное время  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
plorkie,

А раз в час процедура загружает через waitfordelay?
2 июл 19, 23:18    [21919507]     Ответить | Цитировать Сообщить модератору
 Re: Удаление записей из таблицы в определенное время  [new]
Megabyte
Member

Откуда: ближайшее заМКАДье
Сообщений: 4901
Не понятно, с чем у вас проблемы?
Можно использовать джоб по расписанию, в нем будет код удаления данных. Если данных много, то лучше удалять порциями в цикле. Если не слишком много, то можно одним запросом.
Причем тут "waitfor delay" вообще не понятно...
2 июл 19, 23:19    [21919508]     Ответить | Цитировать Сообщить модератору
 Re: Удаление записей из таблицы в определенное время  [new]
aleks222
Member

Откуда:
Сообщений: 923
plorkie
Добрый вечер, всем!

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

Появилась необходимость хранить данные в этой таблице в определенный промежуток времени, т.е допустим с 00:00 до 08:00 am таблица наполняется данными (без предварительного удаления), в оставшееся время таблица, как было изначально чистится и затем наполняется.

Подскажите пжст, с помощью чего это оптимальней сделать? Были мысли это осуществить с помощью waitfor delay и с помощью цикла, но пока не могу до конца додумать.


Проще надо быть.
Пиши в каждой строке СрокПротухания. И учитывай это в запросе, если надо.
Фсе.
Когда ты удалишь протухшие записи - дело десятое.
3 июл 19, 06:00    [21919556]     Ответить | Цитировать Сообщить модератору
 Re: Удаление записей из таблицы в определенное время  [new]
uaggster
Member

Откуда:
Сообщений: 811
plorkie
Добрый вечер, всем!

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

Появилась необходимость хранить данные в этой таблице в определенный промежуток времени, т.е допустим с 00:00 до 08:00 am таблица наполняется данными (без предварительного удаления), в оставшееся время таблица, как было изначально чистится и затем наполняется.

Подскажите пжст, с помощью чего это оптимальней сделать? Были мысли это осуществить с помощью waitfor delay и с помощью цикла, но пока не могу до конца додумать.

Если я всё правильно понял, то, если позволяет версия и редакция сервера (до 2016SP1 - энтерпрайз, после - любая), я бы разрезал таблицу на секции, и секцию, в которой производятся изменения - держал бы в двух экземплярах.
Соответственно "заливка с удалением" - это загрузка в пустую отсоединенную секцию. А "заливка без удаления" - это обычная работа.
Как только данные залиты в отсоединенную секцию - switch partition, и всё заново.
Нужно только, чтобы все изменения были локализованы в "горячей" секции.
3 июл 19, 08:16    [21919577]     Ответить | Цитировать Сообщить модератору
 Re: Удаление записей из таблицы в определенное время  [new]
aleks222
Member

Откуда:
Сообщений: 923
uaggster
plorkie
Добрый вечер, всем!

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

Появилась необходимость хранить данные в этой таблице в определенный промежуток времени, т.е допустим с 00:00 до 08:00 am таблица наполняется данными (без предварительного удаления), в оставшееся время таблица, как было изначально чистится и затем наполняется.

Подскажите пжст, с помощью чего это оптимальней сделать? Были мысли это осуществить с помощью waitfor delay и с помощью цикла, но пока не могу до конца додумать.

Если я всё правильно понял, то, если позволяет версия и редакция сервера (до 2016SP1 - энтерпрайз, после - любая), я бы разрезал таблицу на секции, и секцию, в которой производятся изменения - держал бы в двух экземплярах.
Соответственно "заливка с удалением" - это загрузка в пустую отсоединенную секцию. А "заливка без удаления" - это обычная работа.
Как только данные залиты в отсоединенную секцию - switch partition, и всё заново.
Нужно только, чтобы все изменения были локализованы в "горячей" секции.


Иногда, лучше жевать.
3 июл 19, 10:27    [21919630]     Ответить | Цитировать Сообщить модератору
 Re: Удаление записей из таблицы в определенное время  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7662
plorkie,

разделите процесс на две процедуры - одна чистит, вторая заполняет.
Затем джоб из двух шагов, в шаге очистки напишите if с проверкой времени.
Секционирование там не нужно.
3 июл 19, 12:13    [21919724]     Ответить | Цитировать Сообщить модератору
 Re: Удаление записей из таблицы в определенное время  [new]
plorkie
Member

Откуда:
Сообщений: 31
Всем спасибо!
4 июл 19, 08:37    [21920443]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить