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

Откуда:
Сообщений: 9
Товарищи, как можно увеличить размер транзакционного лога для БД достаточно быстрым способом: например на одну операцию чего-либо?

Нужно для проведения тестирования программы бекапирования баз данных.

Пробовал добавлять данные в SQL-скрипте в базу данных - транзакционный лог не растёт.
2 фев 15, 18:01    [17208225]     Ответить | Цитировать Сообщить модератору
 Re: Как увеличить размер transaction log'а базы данных  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37056
Размер транзакционного лога увеличивается или автоприращением (когда в нем нет места), если оно включено, или командой alter database ... modify file.
2 фев 15, 18:31    [17208356]     Ответить | Цитировать Сообщить модератору
 Re: Как увеличить размер transaction log'а базы данных  [new]
Zufo
Member

Откуда:
Сообщений: 11
сначала проверьте какой режим восстановления установлен на базе.

если режим "full" (полный), то посмотрите размер файла транзакционных логов и его свободное место, при наличии достаточного свободного места файл автоматически увеличиваться не будет (см предыдущий ответ )
2 фев 15, 19:27    [17208626]     Ответить | Цитировать Сообщить модератору
 Re: Как увеличить размер transaction log'а базы данных  [new]
RamirezKIV
Member

Откуда:
Сообщений: 9
До начала процудуры размер БД: 32 МБайт, логов: 1,8 МБайт.

Увеличил размер файла логов до 20 МБайт.

При выполнении бекапа штатными средствами SQL Server Mgmt Studio - получаю бекап БД и логов: 32 МБайт и 87 Кбайт соответственно.

Размер файла транзакционных логов не изменяется - 20 МБайт.

Модель восстановление БД: Full.
2 фев 15, 19:44    [17208722]     Ответить | Цитировать Сообщить модератору
 Re: Как увеличить размер transaction log'а базы данных  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37056
Бэкап в MSSQL не бэкапит "пустое место": вы хоть до 10 Тб размер руками увеличьте, но пока в лог транзакци не попадут незабэкапленные транзакции, ваш бэкап лога будет 87 Кб, или около того.
2 фев 15, 19:51    [17208753]     Ответить | Цитировать Сообщить модератору
 Re: Как увеличить размер transaction log'а базы данных  [new]
RamirezKIV
Member

Откуда:
Сообщений: 9
Я предполагал, что когда я делаю бекап транзакционных логов при модели восстановления "Full", то размер файла с логами должен уменьшаться, даже если там есть пустое пространство, не?
2 фев 15, 20:49    [17209029]     Ответить | Цитировать Сообщить модератору
 Re: Как увеличить размер transaction log'а базы данных  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37056
RamirezKIV
Я предполагал, что когда я делаю бекап транзакционных логов при модели восстановления "Full", то размер файла с логами должен уменьшаться, даже если там есть пустое пространство, не?
"Не".
2 фев 15, 20:50    [17209031]     Ответить | Цитировать Сообщить модератору
 Re: Как увеличить размер transaction log'а базы данных  [new]
RamirezKIV
Member

Откуда:
Сообщений: 9
А как же так? Ведь бекап БД и транзакционных логов предназначены для усечения (уменьшения в размере) файла логов БД - ибо они имеют свойство непомерно разрастаться в процессе работы БД, а вы мне говорите, что нет, это не так!
Не надо так!
2 фев 15, 21:10    [17209114]     Ответить | Цитировать Сообщить модератору
 Re: Как увеличить размер transaction log'а базы данных  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37056
RamirezKIV
А как же так? Ведь бекап БД и транзакционных логов предназначены для усечения (уменьшения в размере) файла логов БД - ибо они имеют свойство непомерно разрастаться в процессе работы БД, а вы мне говорите, что нет, это не так!
Не надо так!
"Не" относится к вашему утверждению "когда я делаю бекап транзакционных логов при модели восстановления "Full", то размер файла с логами должен уменьшаться, даже если там есть пустое пространство". Все остальное вы додумалии.

Бэкап лога всего лишь помечает место в файле лога, занятое забэкапленными транзакциями, как свободное, после чего оно может быть перезаписано новыми транзакциями. А размер файла уменьшается командой dbcc shrinkfile.
2 фев 15, 21:31    [17209182]     Ответить | Цитировать Сообщить модератору
 Re: Как увеличить размер transaction log'а базы данных  [new]
invm
Member

Откуда: Москва
Сообщений: 9400
RamirezKIV
Ведь бекап БД и транзакционных логов предназначены для усечения (уменьшения в размере) файла логов БД
Не предназначен. Бекап журнала никогда не уменьшает файлы журнала. Читайте документацию:
http://technet.microsoft.com/en-us/library/ms189085(v=sql.105).aspx
Truncation does not reduce the size of a physical log file. Reducing the physical size of a log file requires shrinking the file

RamirezKIV
ибо они имеют свойство непомерно разрастаться в процессе работы БД
А не надо выбирать полную модель восстановления и не делать потом резервных копий журнал.
2 фев 15, 21:32    [17209184]     Ответить | Цитировать Сообщить модератору
 Re: Как увеличить размер transaction log'а базы данных  [new]
RamirezKIV
Member

Откуда:
Сообщений: 9
Так это что же получается, что после бекапов БД, логов, мне ещё и shrink самому надо делать?
Неужели нельзя было всё в одном окне Мастера сделать несколькими настройками?
ПС: Доки конечно читать надо и на курсы походить - SQL тема серьёзная.
Хотелось по-быстрому инфу получить. И мне это удалось.
Теперь я всё понял.
Спасибо большое за ответы.
2 фев 15, 21:53    [17209248]     Ответить | Цитировать Сообщить модератору
 Re: Как увеличить размер transaction log'а базы данных  [new]
Glory
Member

Откуда:
Сообщений: 104760
RamirezKIV
Так это что же получается, что после бекапов БД, логов, мне ещё и shrink самому надо делать?
Неужели нельзя было всё в одном окне Мастера сделать несколькими настройками?

А вы уверены, что внимательно изучили этот самый Мастер ?

RamirezKIV
Хотелось по-быстрому инфу получить. И мне это удалось.

Если вы не знаете что-то, то не надо свои сообщения строить так, как будто вы знаете.
Во-первых, это выглядит глупо. А во-вторых, создает вам плохую репутацию
2 фев 15, 21:57    [17209257]     Ответить | Цитировать Сообщить модератору
 Re: Как увеличить размер transaction log'а базы данных  [new]
invm
Member

Откуда: Москва
Сообщений: 9400
RamirezKIV
Так это что же получается, что после бекапов БД, логов, мне ещё и shrink самому надо делать?
Это получается, что доки таки надо читать.
Чтобы понять как работает журнал транзакций и уяснить для себя раз и навсегда, - шринковать ЖТ не нужно.
2 фев 15, 22:03    [17209288]     Ответить | Цитировать Сообщить модератору
 Re: Как увеличить размер transaction log'а базы данных  [new]
RamirezKIV
Member

Откуда:
Сообщений: 9
Glory
А вы уверены, что внимательно изучили этот самый Мастер ?

В мастере Backup... на вкладке Options при бекапе логов у меня разумеется была выставлена опция Truncate the transaction log, если вы это имели ввиду.

И вот я сейчас в затруднительном положении: мне говорят, что бекап БД и логов - размер лог-файла не меняет.
Изменение размера лог-файла после бекапа делается командой шринк.

А потом говорят, что шринковать для уменьшения размера лог-файла необязательно.

Взрыв мозга.
2 фев 15, 22:27    [17209392]     Ответить | Цитировать Сообщить модератору
 Re: Как увеличить размер transaction log'а базы данных  [new]
RamirezKIV
Member

Откуда:
Сообщений: 9
Шринканул я лог из GUI - он стал занимать свой прежний размер. С 20 МБ стал занимать 1,8 МБайт.
Но это не за счёт применения транзакций к БД, а за счёт высвобождения пустого пространства в логе, которое я сам создал искуственно с помощью команды.
А как бы мне вырастить транзакционный лог, чтобы там действительно были транзакции, которые можно применить к БД путём выполнения бекапа?
2 фев 15, 22:32    [17209410]     Ответить | Цитировать Сообщить модератору
 Re: Как увеличить размер transaction log'а базы данных  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31431
RamirezKIV
А как бы мне вырастить транзакционный лог, чтобы там действительно были транзакции, которые можно применить к БД путём выполнения бекапа?
Да просто выполнять изменения в БД. При включённом режиме Full и сделанном после этого полном бакапе.
3 фев 15, 00:40    [17209800]     Ответить | Цитировать Сообщить модератору
 Re: Как увеличить размер transaction log'а базы данных  [new]
RamirezKIV
Member

Откуда:
Сообщений: 9
alexeyvg
Да просто выполнять изменения в БД. При включённом режиме Full и сделанном после этого полном бакапе.


Ну так я так и делал с самого начала - написал SQL-скрипт на 1,3 млн (больше не разрешают) строк с INSERT INTO и выполнял его 100500 раз - в итоге размер файла БД растёт на 2 МБ, а размер лога транзакций - не увеличивается.

Согласен - изменений мало за один раз, но:
1. почему тогда выполнение SQL-запроса занимает секунд 10? Значит нагрузка есть.
2. каким образом не через программы создать такую нагрузку на БД (запись), чтобы транзакционный лог начал расти?
3 фев 15, 05:44    [17209978]     Ответить | Цитировать Сообщить модератору
 Re: Как увеличить размер transaction log'а базы данных  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31431
RamirezKIV
Ну так я так и делал с самого начала - написал SQL-скрипт на 1,3 млн (больше не разрешают) строк с INSERT INTO и выполнял его 100500 раз - в итоге размер файла БД растёт на 2 МБ, а размер лога транзакций - не увеличивается.
А остальные условия выполняются? А то сервер может и не оставлять записи в логе, даже при full модели.

Если вы всё правильно настроили, и выполняете правильные операции, то размер лога должен быть не менее размера данных. Наверняка ведт полный бакап не сделали, а?

Ещё - выполнять удобнее не 100500 INSERT, а массовую операцию.

Например, делаете таблицу на 100000 записей, потом выполняете UPDATE этой таблицы без условия WHERE
Ширина записи должна быть достаточная, не 2 байта.
Да даже 10000 записей хватит, при ширине 1000 байт. Каждый UPDATE будет заполнять лог на 10-20 мб.
3 фев 15, 08:36    [17210132]     Ответить | Цитировать Сообщить модератору
 Re: Как увеличить размер transaction log'а базы данных  [new]
RamirezKIV
Member

Откуда:
Сообщений: 9
alexeyvg
Наверняка ведт полный бакап не сделали, а?


Очень даже делали и бекап БД и бекап логов. И не один раз.

alexeyvg
Ещё - выполнять удобнее не 100500 INSERT, а массовую операцию.

Например, делаете таблицу на 100000 записей, потом выполняете UPDATE этой таблицы без условия WHERE
Ширина записи должна быть достаточная, не 2 байта.
Да даже 10000 записей хватит, при ширине 1000 байт. Каждый UPDATE будет заполнять лог на 10-20 мб.


Можно более подробно как делать UPDATE?
3 фев 15, 16:28    [17213193]     Ответить | Цитировать Сообщить модератору
 Re: Как увеличить размер transaction log'а базы данных  [new]
o-o
Guest
RamirezKIV
как можно увеличить размер транзакционного лога для БД

вот такое гарантированно > 45 Мб лога займет
(если приращение логу большое выставлено, то и больше)
select REPLICATE('a', 8000) as col 
into dbo.t
from sys.all_columns

но если этого мало, сделайте
select REPLICATE('a', 8000) as col 
into dbo.t
from sys.all_columns c1 cross join sys.all_columns c2

гигабайтов 200 должно получиться.
наблюдайте за ростом .ldf, как решите, что хватит, остановите query,
немного(в зависимости от жадности) подождете, пока откатит, зато все гигабайты ваши
3 фев 15, 16:54    [17213439]     Ответить | Цитировать Сообщить модератору
 Re: Как увеличить размер transaction log'а базы данных  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31431
RamirezKIV
Можно более подробно как делать UPDATE?
update t set col=REPLICATE('a', 8000)
3 фев 15, 22:18    [17214719]     Ответить | Цитировать Сообщить модератору
 Re: Как увеличить размер transaction log'а базы данных  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31431
RamirezKIV
Очень даже делали и бекап БД и бекап логов. И не один раз.
Ну, такой ошибки ещё ни у кого не было, значит, делайте репро, и отсылайте в микрософт.
3 фев 15, 22:20    [17214724]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить