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

есть задача вести журнал изменений одной таблицы. если ее не чистить, то со временем эта таблица вырастет то больших размеров. мне хотелось бы ограничить ее, ну скажем, 10000 строк. при добавлении 10001-ой строки самая старая должна стираться.
как проще такое организовать?

спасибо!
9 дек 09, 17:36    [8042538]     Ответить | Цитировать Сообщить модератору
 Re: Ограничиное количество строк в таблице  [new]
drink22
Guest
"если ее не чистить" - я имею в виду не чистить таблицу, которая содержит журнал изменений
9 дек 09, 17:37    [8042548]     Ответить | Цитировать Сообщить модератору
 Re: Ограничиное количество строк в таблице  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
drink22
со временем эта таблица вырастет то больших размеров
Сколько записей в год?
Сколько байт (ориентировочно, в среднем) каждая запись займет?
9 дек 09, 17:38    [8042552]     Ответить | Цитировать Сообщить модератору
 Re: Ограничиное количество строк в таблице  [new]
Пилотажный
Member

Откуда: NGC 6137
Сообщений: 2771
Просто сделать job, который еженочно и никому не мешая кромсает журналы - удаляя самые старые записи.
А лучше старые записи куда-то сбрасывать на носители.
9 дек 09, 17:57    [8042728]     Ответить | Цитировать Сообщить модератору
 Re: Ограничиное количество строк в таблице  [new]
drink22
Guest
Сложно оценить...
Вы намекаете на то, что объемы не те, чтобы заморачиваться на эту тему?
10 дек 09, 12:56    [8046161]     Ответить | Цитировать Сообщить модератору
 Re: Ограничиное количество строк в таблице  [new]
drink22
Guest
Господа, я хочу чего-то странного? :-)
11 дек 09, 10:31    [8050904]     Ответить | Цитировать Сообщить модератору
 Re: Ограничиное количество строк в таблице  [new]
Glory
Member

Откуда:
Сообщений: 104760
drink22
Господа, я хочу чего-то странного? :-)

Зачем делать delete для каждого insert-а, когда можно просто поставить регулярную очистку таблицы - раз в час, в день, в месяц, в год или вообще по желанию админа
11 дек 09, 10:40    [8051009]     Ответить | Цитировать Сообщить модератору
 Re: Ограничиное количество строк в таблице  [new]
aleks2
Guest
Glory
drink22
Господа, я хочу чего-то странного? :-)

Зачем делать delete для каждого insert-а, когда можно просто поставить регулярную очистку таблицы - раз в час, в день, в месяц, в год или вообще по желанию админа


Зачем делать регулярную очистку, если удалять при INSERT надо 1-2-3 записи?
Причем это будет запускаться "ТОЛЬКО КОГДА ДЕЙСТВИТЕЛЬНО НУЖНО", а не молотить попусту.
11 дек 09, 11:53    [8051958]     Ответить | Цитировать Сообщить модератору
 Re: Ограничиное количество строк в таблице  [new]
Glory
Member

Откуда:
Сообщений: 104760
aleks2
Glory
drink22
Господа, я хочу чего-то странного? :-)

Зачем делать delete для каждого insert-а, когда можно просто поставить регулярную очистку таблицы - раз в час, в день, в месяц, в год или вообще по желанию админа


Зачем делать регулярную очистку, если удалять при INSERT надо 1-2-3 записи?
Причем это будет запускаться "ТОЛЬКО КОГДА ДЕЙСТВИТЕЛЬНО НУЖНО", а не молотить попусту.

Зачем вместо одного действия "журналирования изменений" делать еще и "очистку старых данных" ?
Чтобы у пользователя дольше транзакция висела ?
11 дек 09, 11:57    [8052019]     Ответить | Цитировать Сообщить модератору
 Re: Ограничиное количество строк в таблице  [new]
PokeMan
Member

Откуда: MOSKAU
Сообщений: 312
Реализовывал несколько вариантов, остановился на таком:
1. Сразу забабахиваеш в таблицу 10000 строк и потом обновляеш минимальную по timestamp запись и пошло далее.
2. Как вариант - ждеш, когда наберуться твои 10000 строк, а потом см п.1

Хотя ИМХО всегда намного полезнее иметь полный лог всего. Если ресурсы позволяют, то лучше не заморачиваться, а хранить все что есть, а чистку вынести в регламентные работы.
11 дек 09, 12:17    [8052265]     Ответить | Цитировать Сообщить модератору
 Re: Ограничиное количество строк в таблице  [new]
muk07
Member

Откуда: Челябинск
Сообщений: 1842
Вроде бы уже прозвучало разумное предложение.
Пилотажный
Просто сделать job, который еженочно и никому не мешая кромсает журналы - удаляя самые старые записи.
А лучше старые записи куда-то сбрасывать на носители.

У нас ген. уборка в 2 часа ночи.
11 дек 09, 12:21    [8052313]     Ответить | Цитировать Сообщить модератору
 Re: Ограничиное количество строк в таблице  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
drink22
Сложно оценить...
Допустим, 10000 записей в месяц
То есть 1200000 записей за десять лет наберется
Допустим, 1024 байт на каждую запись
Это будет 1.2 гигабайта
Ну пусть на индексы еще столько же - итого 2.4 гигабайта

А из-за чего автор хочет таблицу чистить?
Из-за объемов? 2 с половиной гигабайта не объем
Из-за скорости? Очень вероятно, что индексы помогут решить проблемы скорости
Из-за каких-то административных задач? Тогда я не знаю...
11 дек 09, 12:38    [8052496]     Ответить | Цитировать Сообщить модератору
 Re: Ограничиное количество строк в таблице  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36826
От нечего делать, я думаю.

Сообщение было отредактировано: 11 дек 09, 12:43
11 дек 09, 12:43    [8052543]     Ответить | Цитировать Сообщить модератору
 Re: Ограничиное количество строк в таблице  [new]
VladimirMA
Member

Откуда: Новосибирск
Сообщений: 74
Сказал же человек "есть задача" наверное важно значит что напали

если уж прямо невтерпеж постоянно контролировать записи то можно
тригером

типа

create trigger ret on Tool
after insert
as
if ((select count(*) from Tool)>1000)
begin
if exists(select * from sys.tables where [name] like 'ToolOld') drop table ToolOld;
select * into ToolOld from Tool;
truncate table Tool;
end

с точностью до ошибки :)

сохраняя старые значения на всякий пожарный как обычно
11 дек 09, 13:05    [8052760]     Ответить | Цитировать Сообщить модератору
 Re: Ограничиное количество строк в таблице  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36826
"Есть задача вести журнал". Остальное примерно из то же оперы, что и "ой, а мне int'а не хватит, чтобы идентити генерить".
11 дек 09, 13:17    [8052889]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить