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

Столкнулся с мнением, что

declare
select 
Begin tran 
insert 
update 
Commit tran 


предпочтительнее чем

Begin tran 
declare
select 
insert 
update 
Commit tran 


Однако нигде не могу найти подтверждение этой т.з.
23 окт 13, 13:26    [15020284]     Ответить | Цитировать Сообщить модератору
 Re: Про быстродействие и транзакции  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
Источник "мнения" можно увидеть?
23 окт 13, 14:08    [15020634]     Ответить | Цитировать Сообщить модератору
 Re: Про быстродействие и транзакции  [new]
Гость888
Guest
Коллеги по работе говорят. Но без ссылок на печатные источники.
23 окт 13, 14:12    [15020662]     Ответить | Цитировать Сообщить модератору
 Re: Про быстродействие и транзакции  [new]
TIL
Guest
при til repeatable read и выше блокировки наложенные селектом живут до конца транзакции, соответственно возможны случаи, когда эти блокировки будут мешать другим коннектам.
23 окт 13, 14:15    [15020688]     Ответить | Цитировать Сообщить модератору
 Re: Про быстродействие и транзакции  [new]
Гость888
Guest
У нас рид коммитед
23 окт 13, 14:22    [15020736]     Ответить | Цитировать Сообщить модератору
 Re: Про быстродействие и транзакции  [new]
Crimean
Member

Откуда:
Сообщений: 13147
ну если select - это подчитка данных из таблиц (а не присвоение того, что в declare) и insert/update делается на основании select то как бы select надо внутрь транзакции да еще и, возможно, хинтом подпереть
а если select - это просто заполнение переменных из declare то совершенно все равно
23 окт 13, 14:41    [15020884]     Ответить | Цитировать Сообщить модератору
 Re: Про быстродействие и транзакции  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
Гость888,

Включать select в транзакцию или нет, зависит от того, чего вы в этой транзакции хотите получить.
select не журналируется, блокировки все равно будут накладываться, согласно TIL.
Так что бяка на RC может быть, если есть select, возвращающий данные клиенту, внутри пишущей транзакции и после каких-либо модификаций данных.
23 окт 13, 15:07    [15021147]     Ответить | Цитировать Сообщить модератору
 Re: Про быстродействие и транзакции  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Гость888
Коллеги по работе говорят. Но без ссылок на печатные источники.
Посылайте их лесом, знаем мы таких коллег.

И это, скажите им, что оптимизация идёт сверху вниз и никак иначе. А то я чувствую любителей экономить на спичках, при этом архитектура и подход - ахтунг.
24 окт 13, 00:25    [15023656]     Ответить | Цитировать Сообщить модератору
 Re: Про быстродействие и транзакции  [new]
Гость888
Guest
"Включать select в транзакцию или нет, зависит от того, чего вы в этой транзакции хотите получить."
Это я прекрасно понимаю. Тут речь идет не о том, какие данные мы получим, в соответсвии с УИТ, а о том, что мол селекты и деклейры внутри транзакции жрут лишние ресурсы (что мне кажется неверным)
25 окт 13, 17:10    [15033481]     Ответить | Цитировать Сообщить модератору
 Re: Про быстродействие и транзакции  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Гость888
мол селекты и деклейры внутри транзакции жрут лишние ресурсы

Ресурсы — это конкретные понятия: CPU, RAM, диск, блокировки, коннекты и т.д. и т.п. Ваши коллеги назвали ресурсы, которые потребляются селектами и деклейрами внутри транзакции, но не потребляются вне её?
25 окт 13, 17:21    [15033545]     Ответить | Цитировать Сообщить модератору
 Re: Про быстродействие и транзакции  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34705
Гость888
Подскажите, имеет ли смысл для оптимизации быстродействия выносить инструкции которые не модифицируют данные за объявление транзакции?


Для оптимизации быстродействия не имеет.

Кроме того, SELECT снаружи транзакции и SELECT внутри транзакции -- это разные по семантике вещи.
Первый работает в своей отдельной транзакции, второй -- в общей. у них будет по-разному работать изоляция.
25 окт 13, 17:27    [15033589]     Ответить | Цитировать Сообщить модератору
 Re: Про быстродействие и транзакции  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
MasterZiv
у них будет по-разному работать изоляция.
Пример можно?
25 окт 13, 18:25    [15033844]     Ответить | Цитировать Сообщить модератору
 Re: Про быстродействие и транзакции  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
invm, ну вы же итак знаете что сморозил чел чушь, с кем не бывает. Не всякий же придирается к деталям. А вы издалека.
Изоляция будет одинаково работать.

Некоторые путаю причину со следствиями. Логика задачи определяет какова должна быть изоляция и подходы и код в итоге.
А не как буд-то есть какие-то подводные камни и особенности его писанины не зависимые от задачи.

MasterZiv
Первый работает в своей отдельной транзакции
А вот это забавное/интересное замечание.
Можно прикольнутся и сказать: "На постоянную генерацию неявных транзакций для каждой команды уходят ресурсы. Выкусите".
Главное верно, хоть и бессмысленно экономить на нулях (в случае чтения).
25 окт 13, 23:33    [15035035]     Ответить | Цитировать Сообщить модератору
 Re: Про быстродействие и транзакции  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
Mnior
invm, ну вы же итак знаете что сморозил чел чушь, с кем не бывает. Не всякий же придирается к деталям. А вы издалека.
А вдруг он что-то другое хотел сказать, просто неудачно сформулировал?

Кстати, никаких отдельных транзакций тоже нет (ну может и есть, но я не знаю как это определить). Просто схема наложения блокировок соответствует текущему TIL.
26 окт 13, 00:02    [15035164]     Ответить | Цитировать Сообщить модератору
 Re: Про быстродействие и транзакции  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
invm
Кстати, никаких отдельных транзакций тоже нет (ну может и есть, но я не знаю как это определить)
Хотя да, скорее связка с транзакцией делается не на прямую, а через идентификатор сессии (или что-то типа).
Надо хотя бы на трейсер взглянуть ... да нету там. Ок. Сливам.
26 окт 13, 00:31    [15035304]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить