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

Откуда: Когда-то были Лужки, а теперь Бордюр-Сити.
Сообщений: 2680
Драссьте опять, All!!!
(сразу за вопрос не пинайте, плз)
Это я раньше думал, что в MSSQL что-то понимаю, но мне доказали...

Короче, вот вопрос:

Есть 15 мегабайтный текстовик.
В нем строки для UPDATE таблички.
1-е поле - PK, остальные - на что апдейтить.


Пока делаю так: собираю батники по 64 кб типа
update table(flds) set (flds)
..
update table(flds) set (flds)
Батников получается мноооого. Ускорение будет, если в одну транзакцию обернуть.

И вопрос:
Кто-нибудь пробовал, как по скорости будет, если я BULK INSERT-ом воткну во временную таблицу, а потом из неё ОДНИМ запросом сделаю update для юоевой таблицы?
8 авг 11, 21:52    [11088478]     Ответить | Цитировать Сообщить модератору
 Re: Batch update.  [new]
Makar4ik
Member

Откуда: Когда-то были Лужки, а теперь Бордюр-Сити.
Сообщений: 2680
Makar4ik
а потом из неё ОДНИМ запросом сделаю update для юоевой таблицы?
для боевой таблицы....
то есть, по сути вопрос заключается в том, что:


- 1. мне не лень тестировать на всех датасетах, но страшно. Пока работает - не лезь.
- 2. Есть подозрение, что BULK, а потом один апдейт по связке отработает быстрее.

Вот и вопрос:
ЮЗАЛ ЛИ КТО-НИБУДЬ ТАКОЕ?

В общем-то, вот и вся проблема.
8 авг 11, 21:56    [11088490]     Ответить | Цитировать Сообщить модератору
 Re: Batch update.  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Makar4ik
- 2. Есть подозрение, что BULK, а потом один апдейт по связке отработает быстрее.
Как правило - да, должно быть быстрее.
Makar4ik
ЮЗАЛ ЛИ КТО-НИБУДЬ ТАКОЕ?
100500 раз...
9 авг 11, 06:12    [11089011]     Ответить | Цитировать Сообщить модератору
 Re: Batch update.  [new]
Makar4ik
Member

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

личный опыт?
9 авг 11, 06:14    [11089013]     Ответить | Цитировать Сообщить модератору
 Re: Batch update.  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Makar4ik
tpg,

личный опыт?
Конешно. Не было б, не говорил бы.
В чем сомнения? Почему не попробовать в тестовой среде?
9 авг 11, 06:15    [11089015]     Ответить | Цитировать Сообщить модератору
 Re: Batch update.  [new]
Makar4ik
Member

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

личный опыт?
Конешно. Не было б, не говорил бы.
В чем сомнения? Почему не попробовать в тестовой среде?
боязно, и много кода придёццо менять.
но хочется...
9 авг 11, 06:16    [11089016]     Ответить | Цитировать Сообщить модератору
 Re: Batch update.  [new]
Makar4ik
Member

Откуда: Когда-то были Лужки, а теперь Бордюр-Сити.
Сообщений: 2680
Makar4ik
tpg
пропущено...
Конешно. Не было б, не говорил бы.
В чем сомнения? Почему не попробовать в тестовой среде?
боязно, и много кода придёццо менять.
но хочется...
даже 20% прироста сэкономят мне немного головной боли в КАЖДЫЙ ДЕНЬ.
9 авг 11, 06:16    [11089018]     Ответить | Цитировать Сообщить модератору
 Re: Batch update.  [new]
Makar4ik
Member

Откуда: Когда-то были Лужки, а теперь Бордюр-Сити.
Сообщений: 2680
tpg
В чем сомнения? Почему не попробовать в тестовой среде?
к сожалению, тестовая среда - немного сложная...
от 150-ти гиг БД....
толкать это туды-сюды - не очень удобно...
9 авг 11, 06:18    [11089019]     Ответить | Цитировать Сообщить модератору
 Re: Batch update.  [new]
Makar4ik
Member

Откуда: Когда-то были Лужки, а теперь Бордюр-Сити.
Сообщений: 2680
... просто боюсь, что придется потратить неделю-две на кодирование и отладку, и потом понять, что выигрыш равен нулю.
9 авг 11, 06:22    [11089024]     Ответить | Цитировать Сообщить модератору
 Re: Batch update.  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
http://msmvps.com/blogs/gladchenko/archive/2010/03/09/1761298.aspx
9 авг 11, 06:34    [11089034]     Ответить | Цитировать Сообщить модератору
 Re: Batch update.  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
Makar4ik,

Да всё упирается в передачу по сети, рост лога и временной,

Подобное было решено следующим образом.
1 Бэкап
2 Перевод в simple
3 Однопользовательский режим
4 Закачка в временную таблицу
5 Обновление данных порциями ( 5000 )
6 Проверка
7 Многопользовательский режим
8 Full
9 Full бэкап

Система не обслуживала пользовательские запросы 2 часа.
9 авг 11, 06:49    [11089046]     Ответить | Цитировать Сообщить модератору
 Re: Batch update.  [new]
Makar4ik
Member

Откуда: Когда-то были Лужки, а теперь Бордюр-Сити.
Сообщений: 2680
а не будет ли быстрее обновлять такой вот конструкцией???
update bbb set 
  ID2 = UPD.id2,
  ID3 = UPD.id3
from bbb inner join
OPENROWSET(BULK 'C:\1\111.txt' ,FORMATFILE = 'c:\1\formatfile.txt') AS UPD on UPD.id = bbb.id
9 авг 11, 23:07    [11094496]     Ответить | Цитировать Сообщить модератору
 Re: Batch update.  [new]
Makar4ik
Member

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

Будет ли OPENROWSET эффективнее, чем сперва BULK INSERT, и потом одна команда UPDATE по временной таблице?
14 авг 11, 04:13    [11115924]     Ответить | Цитировать Сообщить модератору
 Re: Batch update.  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 35398
Блог
Makar4ik
UP.

Будет ли OPENROWSET эффективнее, чем сперва BULK INSERT, и потом одна команда UPDATE по временной таблице?


Если у вас действительно очень много данных обновляется, то разумнее было бы грузить во временную таблицу, а затем обновлять порциями.
14 авг 11, 09:50    [11116072]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить