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

TRUNCATE TABLE Inet_TrafficCache

INSERT INTO Inet_TrafficCache ( src, dst, byte, tmc_day )
SELECT src, dst, SUM(byte), CONVERT(DATETIME, CONVERT(VARCHAR(50), tmc, 103), 103)
FROM dbo.Inet_Traffic
GROUP BY src, dst, CONVERT(DATETIME, CONVERT(VARCHAR(50), tmc, 103), 103)
ORDER BY src, dst, CONVERT(DATETIME, CONVERT(VARCHAR(50), tmc, 103), 103)


Записей под 10^6, ожидается прирост как мимнимум на порядок. Лог файл разростается до неприличия. Насколько я понимаю, записывает каждый INSERT_ROW.
Вопрос такой:

Как минимизировать рост лога при выполнении этой процедуры ??
3 окт 03, 18:06    [363389]     Ответить | Цитировать Сообщить модератору
 Re: Минимизация записей в лог  [new]
Glory
Member

Откуда:
Сообщений: 104760
Записей под 10^6,
Где ? В результатах запроса столько записей ?

ЗЫ
А ORDER BY зачем в таком запросе ?
3 окт 03, 18:10    [363397]     Ответить | Цитировать Сообщить модератору
 Re: Минимизация записей в лог  [new]
Некто
Member

Откуда: Киев
Сообщений: 312
Должно быть быстрее:
drop TABLE Inet_TrafficCache 

SELECT src, dst, byte =SUM(byte), tmc_day = CONVERT(DATETIME, CONVERT(VARCHAR(50), tmc, 103), 103)
into Inet_TrafficCache
FROM dbo.Inet_Traffic
GROUP BY src, dst, CONVERT(DATETIME, CONVERT(VARCHAR(50), tmc, 103), 103)


BOL:
In this release of SQL Server, the select into/bulkcopy database option has no effect on whether you can create a permanent table with SELECT INTO. The amount of logging for certain bulk operations, including SELECT INTO, depends on the recovery model in effect for the database. For more information, see Using Recovery Models.
3 окт 03, 18:24    [363410]     Ответить | Цитировать Сообщить модератору
 Re: Минимизация записей в лог  [new]
Alexander_Chepack
Member

Откуда: London
Сообщений: 22649
Лог разрастается во время выполнения одного большого INSERT или просто растет монотонно? В послем случае BACKUP LOG может помочь.

Вы каждый раз полностью обновляете данные в Inet_TrafficCache? Может меньшими порциями это делать с промежуточным бэкапом лога? Или recovery model использовать простую?
4 окт 03, 15:46    [363872]     Ответить | Цитировать Сообщить модератору
 Re: Минимизация записей в лог  [new]
Sargon
Guest
2 Glory
В таблице Inet_Traffic 10^6 записей, с ORDER BY немного переборщил, удалю. Получаемая таблица нужна только для получения дневной статистики, поэтому хотелось сделать ее как можно более оптимальной к запросам.

2 Alexander_Chepack
Смотрю лог файл Log Explorer'ом после этой процедуры появляется уйма записей INSERT_ROW в таблицу Inet_TrafficCache. Хотел узнать как можно МИНИМИЗИРОВАТЬ эти записи

2 Некто
Спасибо. То что нужно. Производительность стала 40 сек против 44 сек, отсутсвие ORDER BY где то в этом промежутке. В лог не пишется вообще ничего, либо я прозевал какието записи от радости :)

Спасибо всем за участие, тема закрыта.
6 окт 03, 11:32    [364618]     Ответить | Цитировать Сообщить модератору
 Re: Минимизация записей в лог  [new]
Некто
Member

Откуда: Киев
Сообщений: 312
> В лог не пишется вообще ничего, либо я прозевал какието записи от радости :)

И не должно. INSERT INTO так же как и TRUNCATE TABLE, пока что bulk insert операциии.
6 окт 03, 18:05    [365673]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить