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

Откуда:
Сообщений: 521
День добрый!
Разъясните плз ситуацию:
Создал новую базу с одной таблицей:
CREATE DATABASE DB_SizeExample
ALTER DATABASE DB_SizeExample SET RECOVERY FULL

Use DB_SizeExample
CREATE TABLE tbl_SizeExample (Id UNIQUEIDENTIFIER)


Размеры файлов:
ФайлTotalUsed
mdf2.251.44
LDF0.560.26


Затем вношу 10000 строк в таблицу:
DECLARE @n INT = 10000

WHILE @n > 0
BEGIN
	INSERT INTO tbl_SizeExample
	VALUES (NEWID())

	SET @n -= 1
END


Размеры файлов немного изменились:
ФайлTotalUsed
mdf2.251.69
LDF0.560.34


Затем делаю полное резервное копирование:
BACKUP DATABASE [DB_SizeExample] TO  DISK = N'D:\DB_Files\Backups\DB_SizeExample.bak' 


И выполняю точно такой же инсерт:
DECLARE @n INT = 10000

WHILE @n > 0
BEGIN
	INSERT INTO tbl_SizeExample
	VALUES (NEWID())

	SET @n -= 1
END


И размер лога вырос значительно больше, чем после первого запуска:
ФайлTotalUsed
mdf2.251.94
LDF5.695.43


Вот интересует почему до бэкапа лог практически не изменился, а после бэкапа изменился и стал более, чем в два раза больше, чем размер файла данных?

Спасибо!
15 апр 15, 17:21    [17519795]     Ответить | Цитировать Сообщить модератору
 Re: Помогите плз разобраться с размером лога.  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8813
Мало ли, автоприрост журнала.
15 апр 15, 17:51    [17519943]     Ответить | Цитировать Сообщить модератору
 Re: Помогите плз разобраться с размером лога.  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
abrashka,

Вы бы версию сервера для начала озвучили, а то может быть все что угодно вплоть до глюка закрытой альфы:)
15 апр 15, 17:56    [17519971]     Ответить | Цитировать Сообщить модератору
 Re: Помогите плз разобраться с размером лога.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Full Recovery не работает, пока не сделан полный бэкап базы.
15 апр 15, 17:57    [17519982]     Ответить | Цитировать Сообщить модератору
 Re: Помогите плз разобраться с размером лога.  [new]
Konst_One
Member

Откуда:
Сообщений: 11621
- ну так базу создали , фулл бэкапа не делали, надобаляли данных в таблицу, замерили.
- потом наконец сделали фулл бэкап и опять надобавляли = лон и распух, что тут вас удивляет?
15 апр 15, 17:57    [17519984]     Ответить | Цитировать Сообщить модератору
 Re: Помогите плз разобраться с размером лога.  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
abrashka,

да и тест не полный, нет checkpoint`a после первого цикла инсертов
15 апр 15, 17:58    [17519987]     Ответить | Цитировать Сообщить модератору
 Re: Помогите плз разобраться с размером лога.  [new]
abrashka
Member

Откуда:
Сообщений: 521
Microsoft SQL Server 2008 R2 (SP1) - 10.50.2550.0 (X64) Jun 11 2012 16:41:53 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )

Автоприрост журнала 10%
15 апр 15, 17:59    [17519994]     Ответить | Цитировать Сообщить модератору
 Re: Помогите плз разобраться с размером лога.  [new]
abrashka
Member

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

Чекпоинт происхадит самостоятельно, раз в какое-то время, нет?
За 10 минут наверняка произошел...


Гавриленко Сергей Алексеевич ,
Спасибо, не думал, что до первого полного бэкапа лог не растет.

В любом случае интересно почему лог превышает размер файла данных более, чем в 2 раза, ведь ничего "сложного" не произошло?
15 апр 15, 18:02    [17520012]     Ответить | Цитировать Сообщить модератору
 Re: Помогите плз разобраться с размером лога.  [new]
o-o
Guest
abrashka
интересно почему лог превышает размер файла данных более, чем в 2 раза, ведь ничего "сложного" не произошло?

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

К сообщению приложен файл. Размер - 26Kb
15 апр 15, 22:23    [17520933]     Ответить | Цитировать Сообщить модератору
 Re: Помогите плз разобраться с размером лога.  [new]
abrashka
Member

Откуда:
Сообщений: 521
o-o,

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


Тогда вот такой вопрос, есть база, full recovery model, oltp, файл mdf занимает 10Г из которых на данный момент используется 8Г. Файл лога занимает 2Г,каждые 15 минут делаю бэкап лога и раз в сутки полный бэкап базы. Вроде все настроено как по книжке.
Раз в несколько месяцев выполняется апгрейд аппликации, который увеличивает размер файла ldf в несколько раз, т.е. лог может легко достичь 15Г. После бэкапа лога- размер файла ldf остается 15Г,несмотря на то, что файл пустой и для нормальной работы достаточно 2Г.
Правильно ли я понимаю, что для решения проблемы нужно либо изменить процесс апгрейда(маловероятно, ибо необходимо, чтоб была возможность отката), либо делать шринк логу после каждого апгрейда(через simple recovery model)?
16 апр 15, 09:54    [17521709]     Ответить | Цитировать Сообщить модератору
 Re: Помогите плз разобраться с размером лога.  [new]
o-o
Guest
abrashka
Понимаю, что открытие и закрытие транзакций влияет на размер лога, но не думал, что до такой степени.

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

abrashka
Правильно ли я понимаю, что для решения проблемы нужно либо изменить процесс апгрейда(маловероятно, ибо необходимо, чтоб была возможность отката), либо делать шринк логу после каждого апгрейда(через simple recovery model)?

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

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

можно попробовать во время этого апгрэйда чаще делать бэкапы лога.
еще может помочь перевод базы в BULK LOGGED, хотя кто его знает, что делает этот ваш апгрэйд.
16 апр 15, 10:28    [17521888]     Ответить | Цитировать Сообщить модератору
 Re: Помогите плз разобраться с размером лога.  [new]
abrashka
Member

Откуда:
Сообщений: 521
o-o,

Спасибо огромное!
Апгрейд должен иметь возможность отката в случае проблемы , поэтому, если я правильно понимаю, необходима полная модель. Апгрейд происходит примерно раз в пол года, не часто, но на сервере порядка 30 баз, размером от 10 до 100Г, вот и получается, что файлы логов занимают огромное количество места на дисках, хотя на самом деле они пусты и "заполняются" примерно раз в пол года.
16 апр 15, 10:45    [17521993]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить