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

Вопрос примерно такой: действительно ли транзакция в этом случае будет источником тормозов? Почему?
9 янв 14, 16:05    [15391316]     Ответить | Цитировать Сообщить модератору
 Re: транзакция как источник тормозов  [new]
Glory
Member

Откуда:
Сообщений: 104760
транзакция и я
Вопрос примерно такой: действительно ли транзакция в этом случае будет источником тормозов? Почему?

Скажите руководящему коллеге, что в MSSQL любая команда изменения данных выполняется в транзакции.
9 янв 14, 16:08    [15391350]     Ответить | Цитировать Сообщить модератору
 Re: транзакция как источник тормозов  [new]
транзакция и я
Guest
Glory,

т.е. получается, что никаких лишних тормозов вообще не будет?
9 янв 14, 16:10    [15391373]     Ответить | Цитировать Сообщить модератору
 Re: транзакция как источник тормозов  [new]
может быть
Guest
транзакция и я,

может быть имелось ввиду ожидание writelog при очень частых commit'ах и оборачивание всех вызовов вашей хранимки в одну транзакцию?
9 янв 14, 16:10    [15391376]     Ответить | Цитировать Сообщить модератору
 Re: транзакция как источник тормозов  [new]
транзакция и я
Guest
может быть
транзакция и я,

может быть имелось ввиду ожидание writelog при очень частых commit'ах и оборачивание всех вызовов вашей хранимки в одну транзакцию?
Ну, хранимка вызывается из клиента. Там в транзакцию обернуты только 2 операции. Предполагается, что хранимка будет вызыватся очень часто (что врядли).
9 янв 14, 16:13    [15391402]     Ответить | Цитировать Сообщить модератору
 Re: транзакция как источник тормозов  [new]
Glory
Member

Откуда:
Сообщений: 104760
транзакция и я
Glory,

т.е. получается, что никаких лишних тормозов вообще не будет?

1. Непонятно, что вы понимаете под тормозами
2. Явные транзакции используют, чтобы выполнить какие то требования к целостности данных.
3. Одна длинная транзакция может дать выигрыш производительности для одного коннекта. Но может уменьшить производительность других коннектов.
9 янв 14, 16:14    [15391416]     Ответить | Цитировать Сообщить модератору
 Re: транзакция как источник тормозов  [new]
Crimean
Member

Откуда:
Сообщений: 13148
транзакция и я
Целость данных по его мнению не так важна


"гвозди бы делать из этих людей" (ц)

если целостность не важна то и транзакция не нужна. как и наоборот. если целостность важна - транзакция нужна. 2 действия в 1 транзакции будут, кстати, быстрее, чем эти же 2 действия по одиночке, но, потенциально, затычнее / дедлочнее при кривоватой реализации на фоне плотной нагрузки. но, опять же, от данных все будет очень зависеть
9 янв 14, 17:01    [15391992]     Ответить | Цитировать Сообщить модератору
 Re: транзакция как источник тормозов  [new]
Score
Guest
Crimean
если целостность не важна то и транзакция не нужна. как и наоборот. если целостность важна - транзакция нужна. 2 действия в 1 транзакции будут, кстати, быстрее, чем эти же 2 действия по одиночке, но, потенциально, затычнее / дедлочнее при кривоватой реализации на фоне плотной нагрузки. но, опять же, от данных все будет очень зависеть

потенциально затычнее и всегда быстрее?
есть ли смысл, при большом количестве записей писать порциями в транзакции для ускорения?
10 янв 14, 00:15    [15393880]     Ответить | Цитировать Сообщить модератору
 Re: транзакция как источник тормозов  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
Score
потенциально затычнее и всегда быстрее?
Угу.
Score
есть ли смысл, при большом количестве записей писать порциями в транзакции для ускорения?
Есть смысл использовать специальные средства и интерфейсы Bulk загрузки.
Помимо того что закачивать в таблу лучше монопольно.
И к тому же есть ещё такое как секционирование (закачал в отдельную таблу, а потом "переключил" данные из неё в основную).

транзакция и я
В хранимой процедуре одна таблица сначала адейтится (меняется 1 запись), потом в нее вставляется опять-же 1 запись.
Вы ещё скажите что вставляется только если не прошёл апдейт (@@RowCount = 0).
транзакция и я
Целость данных по его мнению не так важна.
Самое главное делать видимость прогресса.
Неандерталец с айфоном в руках.
10 янв 14, 04:17    [15394166]     Ответить | Цитировать Сообщить модератору
 Re: транзакция как источник тормозов  [new]
Score
Guest
Mnior
Score
есть ли смысл, при большом количестве записей писать порциями в транзакции для ускорения?
Есть смысл использовать специальные средства и интерфейсы Bulk загрузки.
Помимо того что закачивать в таблу лучше монопольно.
И к тому же есть ещё такое как секционирование (закачал в отдельную таблу, а потом "переключил" данные из неё в основную).
а если говорить не о загрузке об UPDATE ?
10 янв 14, 08:14    [15394370]     Ответить | Цитировать Сообщить модератору
 Re: транзакция как источник тормозов  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31438
транзакция и я
действительно ли транзакция в этом случае будет источником тормозов? Почему?
Две транзакции будут медленее, чем одна, так что в транзакции будет быстрее. Если процесс орбновления один, то ещё быстрее будет вообще обернуть в общую транзакцию большой пакет обновлений.

Но ваш коллега имел в виду видимо другое: с общей транзакцией на два обновления потенциально больше вероятность того, что множество параллельных процессов будут друг другу мешать.
10 янв 14, 08:29    [15394425]     Ответить | Цитировать Сообщить модератору
 Re: транзакция как источник тормозов  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31438
Score
а если говорить не о загрузке об UPDATE ?
Зависит от того, что обновляется - набор случайно распределённых по таблице записей или непрерывный диапазон кластерного индекса.
Для второго случая выгодно загрузить даные во временную таблицу, а потом обновить постоянную таблицу одним запросом.
Для первого думаю без разницы, но можно попробовать обновление набора, переданного табличным параметром, или делать множество обновлений в одной транзакции.
10 янв 14, 08:32    [15394438]     Ответить | Цитировать Сообщить модератору
 Re: транзакция как источник тормозов  [new]
Score
Guest
alexeyvg
Две транзакции будут медленее, чем одна, так что в транзакции будет быстрее.
есть ли официальные рекомендации использовать транзакции для ускорения?
10 янв 14, 08:34    [15394445]     Ответить | Цитировать Сообщить модератору
 Re: транзакция как источник тормозов  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31438
Score
alexeyvg
Две транзакции будут медленее, чем одна, так что в транзакции будет быстрее.
есть ли официальные рекомендации использовать транзакции для ускорения?
Не скажу точно, но вроде что то проскальзывало...

Но это проверяется написанием за минуту тестового скрипта.
10 янв 14, 08:38    [15394455]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить