Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как посчитать размер transaction  [new]
Как посчитать размер transaction
Guest
Добрый день.
Подскажите, пжл, если ли какой-нибудь способ подсчитать сколько места в transaction log будет зарезервировано под следующую операцию.
1. Есть таблица. В ней много строк. 1 млрд.
2. Необходимо обновить одну колонку Field1
Сколько потребуется для этого общего места в transaction log?

Тоже самое, если обновляться будут два поля Field2, Field3

Заранее благодарен.

Сообщение было отредактировано: 11 июл 11, 01:14
10 июл 11, 20:50    [10952814]     Ответить | Цитировать Сообщить модератору
 Re: Павел-П  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Вы уверены, что вы хотите обновлять один миллиард строк в одной транзакции? Хорошо подумали?
10 июл 11, 21:24    [10952879]     Ответить | Цитировать Сообщить модератору
 Re: Павел-П  [new]
Andrey Sribnyak
Member

Откуда: Киев
Сообщений: 600
На самом деле в одной транзакции это не стоит делать...

правильней так:

set rowcount 1000 -- number rows to delete
use YouDataBase
delete from [dbo].[bigTable] 
while (@@ROWCOUNT <> 0)
      delete from [dbo].[bigTable] 

10 июл 11, 21:32    [10952907]     Ответить | Цитировать Сообщить модератору
 Re: Павел-П  [new]
Павел-П
Guest
Гавриленко Сергей Алексеевич,

А что мне мешает?
10 июл 11, 22:16    [10953033]     Ответить | Цитировать Сообщить модератору
 Re: Павел-П  [new]
Павел-П
Guest
Andrey Sribnyak,

Почему не стоит?
Вообще-то вопрос состоит в том, как посчитать насколько увеличиться лог допустим при 100.000 строчках, 1000000 строк, 1 млрд строк?
Это как-то можно прикинуть.
10 июл 11, 22:18    [10953036]     Ответить | Цитировать Сообщить модератору
 Re: Как посчитать размер transaction  [new]
BestZvit
Member

Откуда: Гоблино
Сообщений: 2250
Как посчитать размер transaction
подсчитать сколько места в transaction log будет зарезервировано


Павел-П
Вообще-то вопрос состоит в том, как посчитать насколько увеличиться лог


Вы сразу бы определились что вам надо: на сколько сам тр. лог увеличится или сколько места в нем будет резервироваться/использоваться .. ?
11 июл 11, 03:32    [10953566]     Ответить | Цитировать Сообщить модератору
 Re: Как посчитать размер transaction  [new]
Нектотам
Guest
Как посчитать размер transaction,

Размер недетерминирован и я не помню, чтобы MS где-то публиковало данные по estimate размерам при тех или иных действиях, но из опыта могу дать примерно следующие ориентиры:
1. В случае, если столбец входит в кластреный индекс, то резервировать нужно не менее 1,5-4,5 размеров данных и индексов. Это сильно зависит от того, какое обновление происходит, но это и наихудший случай.
2. В случае, если столбец не участвует в индексах, да еще и уменьшается nvarchar/varbinary, то размеры могут быть сильно меньше.
3. В большинстве случаев пересоздание таблицы через bulk insert с применением модели восстановления с неполным протоколированием будет быстрее и экономичнее по пространству для логов
11 июл 11, 06:40    [10953601]     Ответить | Цитировать Сообщить модератору
 Re: Как посчитать размер transaction  [new]
Павел-П
Guest
Нектотам,

Спасибо за ответ.
Собственно говоря, я и хотел убедиться, что никакого особого алгоритма для расчета какое место в transaction log будет резервировать операция нет.
Я сейчас делаю методом эксперимента. Т.е. прикидываю на копии таблицы или на сгенерированных данных.
11 июл 11, 10:28    [10954079]     Ответить | Цитировать Сообщить модератору
 Re: Как посчитать размер transaction  [new]
Павел-П
Guest
BestZvit
Вы сразу бы определились что вам надо: на сколько сам тр. лог увеличится или сколько места в нем будет резервироваться/использоваться .. ?


Меня устроит если Вы ответите, на любой из этих вопросов.
Интересно, как вы будете отвечать на первый вопрос, если у Вас нет ответа на второй вопрос.
11 июл 11, 10:42    [10954177]     Ответить | Цитировать Сообщить модератору
 Re: Как посчитать размер transaction  [new]
BestZvit
Member

Откуда: Гоблино
Сообщений: 2250
Павел-П
Интересно, как вы будете отвечать на первый вопрос, если у Вас нет ответа на второй вопрос.


1. Приведите подтверждение того, что "..у Меня нет ответа на второй вопрос".

2. А как вообще эти вопросы могут быть взаимосвязаны ?
12 июл 11, 00:34    [10959065]     Ответить | Цитировать Сообщить модератору
 Re: Как посчитать размер transaction  [new]
Makar4ik
Member

Откуда: Когда-то были Лужки, а теперь Бордюр-Сити.
Сообщений: 2680
Вставлю-ка свои 3 копейки.
BestZvit
1. Приведите подтверждение того, что "..у Меня нет ответа на второй вопрос".

Вы не так и не удосужились ответить. Вот и подтверждение.
тут только 3 варианта:
1) Вы не можете ответить, поняв вопрос.
2) Вы не можете ответить, НЕ поняв вопрос (но все равно не можете).
3) Вы ломаетесь, как девица на выданье. И при этом, что-то мне подсказывает, что чем-то обиженная девица.

Выбирайте вариант по вкусу, но ответить вы все еще не смогли.

P.S. Я тоже не могу, но не выпендриваюсь по этому поводу.
12 июл 11, 03:10    [10959277]     Ответить | Цитировать Сообщить модератору
 Re: Как посчитать размер transaction  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
Павел-П,

В качестве предположения -- для оценки общего объема, с помощью DBCC LOG узнать размер записи в журнале для одной строки и экстраполировать его на весь набор.
12 июл 11, 10:05    [10959909]     Ответить | Цитировать Сообщить модератору
 Re: Как посчитать размер transaction  [new]
Павел-П
Guest
invm,

Спасибо за ответ, примерно так сейчас и делаю, методом эксперимента.
12 июл 11, 19:02    [10963918]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить