Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Максимальный размер журнала транзакций  [new]
журнала транзакций
Guest
Какой максимальный размер журнала транзакций возможен при Rcovery model: simple?
Машина 32 ГБ ОЗУ. Запросы к БД могут быть совершенно различные и размер транзакции на вставку может быть 1 - 100 ГБ.
16 июл 11, 00:01    [10983045]     Ответить | Цитировать Сообщить модератору
 Re: Максимальный размер журнала транзакций  [new]
Makar4ik
Member

Откуда: Когда-то были Лужки, а теперь Бордюр-Сити.
Сообщений: 2680
журнала транзакций,

неограниченный. Зависит от ваших транзакций.
Если база 100 гиг, 256 ядер, то в одной тяжкой транзакции за ночь - запросто до пары терабайт вырастет.
16 июл 11, 00:16    [10983120]     Ответить | Цитировать Сообщить модератору
 Re: Максимальный размер журнала транзакций  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31984
журнала транзакций
Какой максимальный размер журнала транзакций возможен при Rcovery model: simple?
Машина 32 ГБ ОЗУ. Запросы к БД могут быть совершенно различные и размер транзакции на вставку может быть 1 - 100 ГБ.
Ориентировочно 100 гб, но как я понимаю может быть больше в зависимости от наличия индексов.
16 июл 11, 00:23    [10983145]     Ответить | Цитировать Сообщить модератору
 Re: Максимальный размер журнала транзакций  [new]
Makar4ik
Member

Откуда: Когда-то были Лужки, а теперь Бордюр-Сити.
Сообщений: 2680
журнала транзакций
размер транзакции на вставку может быть 1 - 100 ГБ.
да, сорри, погорячился.
alexeyvg сказал верно. Ориентировочно до 100 гб, если такая транзакция параллельно шла только одна.
16 июл 11, 00:41    [10983204]     Ответить | Цитировать Сообщить модератору
 Re: Максимальный размер журнала транзакций  [new]
защиты от потери
Guest
alexeyvg
журнала транзакций
Какой максимальный размер журнала транзакций возможен при Rcovery model: simple?
Машина 32 ГБ ОЗУ. Запросы к БД могут быть совершенно различные и размер транзакции на вставку может быть 1 - 100 ГБ.
Ориентировочно 100 гб, но как я понимаю может быть больше в зависимости от наличия индексов.
А
А зачем так много ей нужно?
Я так понимаю в лог пишется информация для защиты от потери при сбое и имеет смысл там держать только то, что в данный момент находится в ОЗУ и ещё не сброшено на диск в БД.
16 июл 11, 01:10    [10983275]     Ответить | Цитировать Сообщить модератору
 Re: Максимальный размер журнала транзакций  [new]
Makar4ik
Member

Откуда: Когда-то были Лужки, а теперь Бордюр-Сити.
Сообщений: 2680
защиты от потери
А зачем так много ей нужно?
одна транзакция пишется вся. Пока не закончится успешно.
Если она 100 гиг, то будет 100 гиг.
Если запустить одновременно 10, то будет до терабайта.

Если же это не одна, а внутри 100 транзакций по гигу, то будет гиг.
Если 10 раз одновременно по 100 транзакций по гигу, то максимум - примерно 10 гиг.
Ну, это в случае simple...
16 июл 11, 02:41    [10983436]     Ответить | Цитировать Сообщить модератору
 Re: Максимальный размер журнала транзакций  [new]
Makar4ik
Member

Откуда: Когда-то были Лужки, а теперь Бордюр-Сити.
Сообщений: 2680
защиты от потери
Я так понимаю в лог пишется информация для защиты от потери при сбое и имеет смысл там держать только то, что в данный момент находится в ОЗУ и ещё не сброшено на диск в БД.
в лог пишется инфа для отката транзакции
16 июл 11, 02:42    [10983438]     Ответить | Цитировать Сообщить модератору
 Re: Максимальный размер журнала транзакций  [new]
Makar4ik
Member

Откуда: Когда-то были Лужки, а теперь Бордюр-Сити.
Сообщений: 2680
а от аппаратного сбоя - еще не придумали журналов...
так что при сбое питания, или аппаратуры, журналы - в помощь, но не панацея ни разу.
16 июл 11, 02:44    [10983439]     Ответить | Цитировать Сообщить модератору
 Re: Максимальный размер журнала транзакций  [new]
журнала транзакций
Guest
Makar4ik
защиты от потери
Я так понимаю в лог пишется информация для защиты от потери при сбое и имеет смысл там держать только то, что в данный момент находится в ОЗУ и ещё не сброшено на диск в БД.
в лог пишется инфа для отката транзакции

Т.е. в ходе выполнения транзакции в БД пишутся "грязные" изменения, а в журнал данные для отката. А в момент подтверждения транзакции (commit) все данные уже записаны в БД и данные из журнала уже не нужны?
16 июл 11, 03:17    [10983459]     Ответить | Цитировать Сообщить модератору
 Re: Максимальный размер журнала транзакций  [new]
Makar4ik
Member

Откуда: Когда-то были Лужки, а теперь Бордюр-Сити.
Сообщений: 2680
журнала транзакций
Makar4ik
пропущено...
в лог пишется инфа для отката транзакции

Т.е. в ходе выполнения транзакции в БД пишутся "грязные" изменения, а в журнал данные для отката. А в момент подтверждения транзакции (commit) все данные уже записаны в БД и данные из журнала уже не нужны?
в Simple - да. место освобождается.
но если файл вырос, то вырос. Шринкать его без спроса - нет смысла. В других режимах - держим изменения для отката. Ну и для diff backup.
16 июл 11, 04:51    [10983495]     Ответить | Цитировать Сообщить модератору
 Re: Максимальный размер журнала транзакций  [new]
журналируем undo
Guest
Ясно, т.е. журналируем исключительно undo.
16 июл 11, 04:54    [10983496]     Ответить | Цитировать Сообщить модератору
 Re: Максимальный размер журнала транзакций  [new]
Makar4ik
Member

Откуда: Когда-то были Лужки, а теперь Бордюр-Сити.
Сообщений: 2680
журналируем undo
Ясно, т.е. журналируем исключительно undo.
да. причем, в Simple - только незавершенные транзакции...
А так - все подряд складируем.
16 июл 11, 04:56    [10983497]     Ответить | Цитировать Сообщить модератору
 Re: Максимальный размер журнала транзакций  [new]
Makar4ik
Member

Откуда: Когда-то были Лужки, а теперь Бордюр-Сити.
Сообщений: 2680
и заведи себе ник, что-ли? :)
ты же, надеюсь, тут не в последний раз...
16 июл 11, 04:58    [10983500]     Ответить | Цитировать Сообщить модератору
 Re: Максимальный размер журнала транзакций  [new]
aleks2
Guest
журналируем undo
Ясно, т.е. журналируем исключительно undo.


Темнота. В журнал транзакций записывается все необходимое для ПРОВЕДЕНИЯ транзакции или ОТКАТА.

И при обломе, сервер способен не только откатить транзакцию, но и довести ее до конца.

2011-06-22 08:20:36.04 spid16s     1 transactions rolled forward in database 'ISA analisys' (9). This is an informational message only. No user action is required.
2011-06-22 08:20:36.11 spid6s 0 transactions rolled back in database 'Test' (8). This is an informational message only. No user action is required.
2011-06-22 08:20:36.49 spid6s Recovery is writing a checkpoint in database 'Test' (8). This is an informational message only. No user action is required.
2011-06-22 08:20:36.49 spid17s 1 transactions rolled forward in database 'ISA' (10). This is an informational message only. No user action is required.
2011-06-22 08:20:36.69 spid14s 0 transactions rolled back in database 'adp1SQL' (11). This is an informational message only. No user action is required.
2011-06-22 08:20:36.93 spid14s Recovery is writing a checkpoint in database 'adp1SQL' (11). This is an informational message only. No user action is required.
2011-06-22 08:20:37.18 spid12s 1 transactions rolled forward in database 'msdb' (4). This is an informational message only. No user action is required.
2011-06-22 08:20:37.45 spid6s 0 transactions rolled back in database 'ISA analisys' (9). This is an informational message only. No user action is required.
2011-06-22 08:20:37.59 spid6s Recovery is writing a checkpoint in database 'ISA analisys' (9). This is an informational message only. No user action is required.
2011-06-22 08:20:37.70 spid18s 0 transactions rolled back in database 'ISA' (10). This is an informational message only. No user action is required.
2011-06-22 08:20:37.79 spid18s Recovery is writing a checkpoint in database 'ISA' (10). This is an informational message only. No user action is required.
2011-06-22 08:20:37.79 spid6s 0 transactions rolled back in database 'msdb' (4). This is an informational message only. No user action is required.
2011-06-22 08:20:37.91 spid6s Recovery is writing a checkpoint in database 'msdb' (4). This is an informational message only. No user action is required.
2011-06-22 08:20:39.49 spid13s 1 transactions rolled forward in database 'SUSDB' (5). This is an informational message only. No user action is required.
2011-06-22 08:20:39.64 spid6s 0 transactions rolled back in database 'SUSDB' (5). This is an informational message only. No user action is required.
2011-06-22 08:20:39.64 spid6s Recovery is writing a checkpoint in database 'SUSDB' (5). This is an informational message only. No user action is required.
2011-06-22 08:20:39.85 spid13s CHECKDB for database 'SUSDB' finished without errors on 2010-09-03 14:02:48.950 (local time). This is an informational message only; no user action is required.
16 июл 11, 07:25    [10983515]     Ответить | Цитировать Сообщить модератору
 Re: Максимальный размер журнала транзакций  [new]
Makar4ik
Member

Откуда: Когда-то были Лужки, а теперь Бордюр-Сити.
Сообщений: 2680
aleks2
Темнота. В журнал транзакций записывается все необходимое для ПРОВЕДЕНИЯ транзакции или ОТКАТА.
Сперва основы, и только потом - частности...
Или ты всё-таки будешь внушать ученику, у которого вчера был первый урок информатики, принципы полиморфизма или организации облачных вычислений?

Человек спросил в принципе правильный вопрос. Получил в принципе адекватный (надеюсь) ответ.
16 июл 11, 07:49    [10983519]     Ответить | Цитировать Сообщить модератору
 Re: Максимальный размер журнала транзакций  [new]
Makar4ik
Member

Откуда: Когда-то были Лужки, а теперь Бордюр-Сити.
Сообщений: 2680
журнала транзакций
Т.е. в ходе выполнения транзакции в БД пишутся "грязные" изменения, а в журнал данные для отката. А в момент подтверждения транзакции (commit) все данные уже записаны в БД и данные из журнала уже не нужны?
Да, кстати...
Убедиться в этом можно запустив какой-нть update на полчаса, и прервав его выполнение под конец.
Откатываться будет - тоже полчаса, если не дольше.
16 июл 11, 08:10    [10983524]     Ответить | Цитировать Сообщить модератору
 Re: Максимальный размер журнала транзакций  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
aleks2
И при обломе, сервер способен не только откатить транзакцию, но и довести ее до конца.
Ну не совсем "довести до конца". Сервер просто приводит файлы данных в соответствие, как если бы ни одной незакомиченной по логу транзакции никогда и не было, а все закомиченные по логу транзакции полностью попали в файлы данных.
16 июл 11, 11:19    [10983635]     Ответить | Цитировать Сообщить модератору
 Re: Максимальный размер журнала транзакций  [new]
журнала транзакций
Guest
Makar4ik
журнала транзакций
Т.е. в ходе выполнения транзакции в БД пишутся "грязные" изменения, а в журнал данные для отката. А в момент подтверждения транзакции (commit) все данные уже записаны в БД и данные из журнала уже не нужны?
Да, кстати...
Убедиться в этом можно запустив какой-нть update на полчаса, и прервав его выполнение под конец.
Откатываться будет - тоже полчаса, если не дольше.

Это кстати да, пробовал. И сам отменял и при отключении питания видел, там БД в рекавери уходит. Подвисает на время.

Гавриленко Сергей Алексеевич
aleks2
И при обломе, сервер способен не только откатить транзакцию, но и довести ее до конца.
Ну не совсем "довести до конца". Сервер просто приводит файлы данных в соответствие, как если бы ни одной незакомиченной по логу транзакции никогда и не было, а все закомиченные по логу транзакции полностью попали в файлы данных.

Т.е. в логе транзакций пишутся
при Simple: undo
при Full: redo и undo
И параллельно с этим в БД пишутся измененные данные и в момент подтверждения транзакции все данные уже есть в БД?
А при отмене транзакции начинает читаться журнал и откатываются изменения в соответствии с undo.
16 июл 11, 14:23    [10983952]     Ответить | Цитировать Сообщить модератору
 Re: Максимальный размер журнала транзакций  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31984
Makar4ik
защиты от потери
Я так понимаю в лог пишется информация для защиты от потери при сбое и имеет смысл там держать только то, что в данный момент находится в ОЗУ и ещё не сброшено на диск в БД.
в лог пишется инфа для отката транзакции
Неправильно. В лог пишется вся инфа для проведения транзакции и для её отката.

журнала транзакций
Т.е. в ходе выполнения транзакции в БД пишутся "грязные" изменения, а в журнал данные для отката.
Нет, в момент проведения транзакции в БД ничего не пишется.
журнала транзакций
А в момент подтверждения транзакции (commit) все данные уже записаны в БД и данные из журнала уже не нужны?
В момент подтверждения транзакции (commit) все данные уже записаны в журнал.

В файлы данных при этом ничего не записано.

Makar4ik
журналируем undo
Ясно, т.е. журналируем исключительно undo.
да. причем, в Simple - только незавершенные транзакции...
А так - все подряд складируем.
Как это - только незавершённые транзакции? Завершённые тоже. А потом из этих записей лога пишем данные в файл данных (как раз для завершённых транзакций).

Makar4ik
aleks2
Темнота. В журнал транзакций записывается все необходимое для ПРОВЕДЕНИЯ транзакции или ОТКАТА.
Сперва основы, и только потом - частности...
Или ты всё-таки будешь внушать ученику, у которого вчера был первый урок информатики, принципы полиморфизма или организации облачных вычислений?

Человек спросил в принципе правильный вопрос. Получил в принципе адекватный (надеюсь) ответ.
Нет, ответ неадекватный. Очень важно понимание, что при проведении транзакции и в момент коммита (когда данные гарантированно сохранены на диск) в файлы данных БД не пишется вообще никакой информации. Только в лог, причём независимо от модели восстановления.

А вы вообще последовательно раз за разом неправильно описывали поведение сиквела :-)
А вот что там конкреное - undo redo или команды - это уже детали, это неважно.

Разумеется, всё вышесказанное верно для логируемых операций. Для нелогируемых немного по другому.

Вот хорошая статья про это: Почему в Microsoft SQL Server лог-файл важнее файла данных
16 июл 11, 15:27    [10984059]     Ответить | Цитировать Сообщить модератору
 Re: Максимальный размер журнала транзакций  [new]
журнала транзакций
Guest
alexeyvg
Очень важно понимание, что при проведении транзакции и в момент коммита (когда данные гарантированно сохранены на диск) в файлы данных БД не пишется вообще никакой информации. Только в лог, причём независимо от модели восстановления.

Т.е. только после подтверждения транзакции MS SQL начинает читать лог и писать данные из него в БД?
Просто насколько я знаю в других СУБД Oracle/PostgreSQL лог транзакций вообще не читается, кроме случаев восстановления после сбоя.
16 июл 11, 15:38    [10984078]     Ответить | Цитировать Сообщить модератору
 Re: Максимальный размер журнала транзакций  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31984
журнала транзакций
alexeyvg
Очень важно понимание, что при проведении транзакции и в момент коммита (когда данные гарантированно сохранены на диск) в файлы данных БД не пишется вообще никакой информации. Только в лог, причём независимо от модели восстановления.
Т.е. только после подтверждения транзакции MS SQL начинает читать лог и писать данные из него в БД?
Да, только конечно с поправкой на кеш - если объём изменений помещается в ОЗУ, то физически с диска лог не читается - только из памяти.

Просто, если поразмыслить, такой способ ускоряет операции записи, для потока мелких транзакций - просто на порядки!

журнала транзакций
Просто насколько я знаю в других СУБД Oracle/PostgreSQL лог транзакций вообще не читается, кроме случаев восстановления после сбоя.
Вот чего не знаю, того не знаю :-(
16 июл 11, 15:52    [10984098]     Ответить | Цитировать Сообщить модератору
 Re: Максимальный размер журнала транзакций  [new]
журнала транзакций
Guest
alexeyvg
журнала транзакций
пропущено...
Т.е. только после подтверждения транзакции MS SQL начинает читать лог и писать данные из него в БД?
Да, только конечно с поправкой на кеш - если объём изменений помещается в ОЗУ, то физически с диска лог не читается - только из памяти.

Тогда смотрите что получается.
Запускаю инстанс. 0 активных транзакций. Делаю большой апдейт на 100 ГБ. Ближе к концу прерываю его выполнение.
В момент отмена транзакции:
1. По сути БД ещё не изменена и полностью актуальна, а данные лога транзакций полностью не нужены.
2. По факту что-то где-то начинает откатываться на пол часа на основе undo лога транзакций.

Почему такая разница между 1 и 2 и что там откатывается?
16 июл 11, 19:45    [10984568]     Ответить | Цитировать Сообщить модератору
 Re: Максимальный размер журнала транзакций  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
журнала транзакций,

с чего вы так решили, что база таки не изменена?
точнее что в файл данных еще не внесены изменения?
16 июл 11, 20:49    [10984641]     Ответить | Цитировать Сообщить модератору
 Re: Максимальный размер журнала транзакций  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31984
журнала транзакций
alexeyvg
Да, только конечно с поправкой на кеш - если объём изменений помещается в ОЗУ, то физически с диска лог не читается - только из памяти.

Тогда смотрите что получается.
Запускаю инстанс. 0 активных транзакций. Делаю большой апдейт на 100 ГБ. Ближе к концу прерываю его выполнение.
В момент отмена транзакции:
1. По сути БД ещё не изменена и полностью актуальна, а данные лога транзакций полностью не нужены.
2. По факту что-то где-то начинает откатываться на пол часа на основе undo лога транзакций.

Почему такая разница между 1 и 2 и что там откатывается?
Во первых, в кеш эта транзакция не помещается.

Во вторых, я тут конечно не совсем точно сказал.

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

Сиквел начинает менять страницы данных до конца транзакции, просто это фоновый процесс - когда начнётся и когда закончится, неизвестно. Для потока коротких транзакций все изменения страниц данных будут делаться намного позже конца транзакции (процесс LAZY WRITER просто не будет успевать), а для длинной транзакции эти записи будут идти параллельно.

Соответственно, при откате изменения будут откатываться, а т.к. в памяти данных лога нет, то будет чтение из лога и запись в файл данных.
16 июл 11, 20:58    [10984649]     Ответить | Цитировать Сообщить модератору
 Re: Максимальный размер журнала транзакций  [new]
журнала транзакций
Guest
alexeyvg, вот теперь все понятно, спасибо.

Просто не думал, что redo читается в обычном течении жизни СУБД. С одной стороны это замедляет работу крупных транзакций, с другой ускоряет работу мелких транзакций. И позволяет это ускорение распространить на большое количество мелких транзакций совокупный объем которых больше объема ОЗУ, чего не могут PostgreSQL и Oracle.
А замедление для крупных транзакций обходится существованием операции без протоколирования.
16 июл 11, 21:16    [10984679]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить