Quantcast
Channel: SQL.ru: Microsoft SQL Server
Viewing all articles
Browse latest Browse all 7251

Рост лога во время инсерта в таблицу, как решить?

$
0
0
День добрый!
В базе с Simple recovery model есть процедура которая сначала удаляет все данные из таблицы(truncate) а затем заполняет ее, речь идет о билетной кассе, таблица содержит место+представление. Т.е. грубо говоря если в базе есть 1000 представлений и в зале есть 3000 мест, то таблица будет содержать 3 миллиона строк. Если делаю обычный insert into select, то размер лога растет примерно как и размер mdf.
Если инсерт по какой-либо причине упадет, то нет необходимости в откате.
Как можно снизить до минимума рост лога во время инсерта(кроме как делать шринк после выполнения процедуры)?

Пробовал запускать инсерт в циклах по 1,10, 100 представлений в каждом инсерте, но на лог это не влияет.
Если делаю типа
while...
 begin
  begin tran
    insert into ... select...
  commit tran
 end
 

То пользы никакой нет, но если запускаю чекпоинт после каждого инсерта, то лог растет намного меньше.
Вопрос в том, на сколько безопасно исползовать чекпоинт в таком виде и есть ли другие способы решить эту проблему?
while...
 begin
    insert into ... select...
  checkpoint
 end
 

Спасибо!

Viewing all articles
Browse latest Browse all 7251

Trending Articles