Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
 Re: понятие транзакции. просьба разъяснить.  [new]
andron81
Member

Откуда: Смоленск
Сообщений: 787
TaPaK,

дайте название книги где это всё нормально расписано. а то не знаю в какой почитать.
26 июл 18, 13:55    [21604341]     Ответить | Цитировать Сообщить модератору
 Re: понятие транзакции. просьба разъяснить.  [new]
invm
Member

Откуда: Москва
Сообщений: 9122
andron81
у меня книга одна , она вообще дебильная . по их определению и "select * from table" это тоже является транзакцией
Видимо для вас MSSQL будет "дебильным" сервером, ибо в нем любая инструкция, затрагивающая данные, выполняется в транзакции.
26 июл 18, 14:34    [21604617]     Ответить | Цитировать Сообщить модератору
 Re: понятие транзакции. просьба разъяснить.  [new]
andron81
Member

Откуда: Смоленск
Сообщений: 787
invm
andron81
у меня книга одна , она вообще дебильная . по их определению и "select * from table" это тоже является транзакцией
Видимо для вас MSSQL будет "дебильным" сервером, ибо в нем любая инструкция, затрагивающая данные, выполняется в транзакции.


то есть по вашему "select" затрагивает данные ?
26 июл 18, 14:37    [21604632]     Ответить | Цитировать Сообщить модератору
 Re: понятие транзакции. просьба разъяснить.  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
andron81
invm
пропущено...
Видимо для вас MSSQL будет "дебильным" сервером, ибо в нем любая инструкция, затрагивающая данные, выполняется в транзакции.


то есть по вашему "select" затрагивает данные ?

да
26 июл 18, 14:39    [21604649]     Ответить | Цитировать Сообщить модератору
 Re: понятие транзакции. просьба разъяснить.  [new]
andron81
Member

Откуда: Смоленск
Сообщений: 787
TaPaK,

я всегда считал, что select делает выборку, читает данные.
Тогда для пущей каши расскажите что будет результатом отката "select" ???
26 июл 18, 14:42    [21604668]     Ответить | Цитировать Сообщить модератору
 Re: понятие транзакции. просьба разъяснить.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30778
Yasha123
alexeyvg
Наверное, не надо обобщённо утверждать, что если нет стейтмента BEGIN TRANSACTION, то три инсёрта будут тремя разными транзакциями

а я где-то такое утверждаю?
Да, вот тут:
Yasha123
я утверждаю, что написанный вами код, это 3 транзакции.

Ибо если включён SET IMPLICIT_TRANSACTIONS ON, то после первого инсёрта начнётся общая транзакция, в которой будет выполняться в том числе и третий инсёрт.
И вот тут не прокатывает "а если это лишь кусок кода, то уж простите, ваши проблемы", потому что это не кусок кода, а весь код, а статус IMPLICIT_TRANSACTIONS ON - это не код, а установка коннекта; возможно, все коннекты в системе имеют такую установку.

И более того, корректно будет считать это "полным кодом" при запуске такого батча из клиента, при том, что из клиента до этого выполнялись другие батчи,и, в частности, была начата транзакция.
26 июл 18, 14:48    [21604704]     Ответить | Цитировать Сообщить модератору
 Re: понятие транзакции. просьба разъяснить.  [new]
andron81
Member

Откуда: Смоленск
Сообщений: 787
andron81,

я может быть туплю, но я считал, что транзакция это инструкция которая вносит правки в б.д.
select - выборки которые не делают ничего в б.д.
26 июл 18, 14:49    [21604710]     Ответить | Цитировать Сообщить модератору
 Re: понятие транзакции. просьба разъяснить.  [new]
invm
Member

Откуда: Москва
Сообщений: 9122
andron81
я всегда считал, что select делает выборку, читает данные.
А читать это не затрагивать?
andron81
Тогда для пущей каши расскажите что будет результатом отката "select" ???
Чтобы избавиться от каши, начните с правильного определения транзакции. Например тут.
26 июл 18, 14:51    [21604716]     Ответить | Цитировать Сообщить модератору
 Re: понятие транзакции. просьба разъяснить.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30778
andron81
Но в этом случае дойдя до конца, мы всё равно должны сделать откат. иначе нарушается условие атомарности.
Я же вам говорю, условие атомарности не нарушится, потому что транзакция не декларативна.

Она не охватывает те операции, которые написаны программистом между begin и commit.

Те операции, которые были включены в транзакцию, можно подтвердить или откатить. А те, которые не были включены в транзакцию, не поменяли данные, и в транзакцию не включились, на неё не повлияли.

andron81
Как известно транзакция задает последовательность инструкций языка Transact-SQL, применяемую для объединения в один пакет операций чтения и записи для того, чтобы система базы данных могла обеспечить согласованность данных. (откопипастил первое попавшееся определение)
Из этого можно понять, что транзакция есть нечто декларативное, как указание, что эти стейтменты должны выполнится как единое целое.

Но это неправильное определение.

Вы лучше представьте, что это некое последовательность бакапов диска.
Вы сделали бакап, потом на диск пишете, читаете, какие то записи завершаются с ошибкой... Потом опять пишите...
А потом принимаете решение - сделать очередной бакап, или восстановить последний. Вот это есть подтвердить или откатить транзакцию.
26 июл 18, 14:56    [21604733]     Ответить | Цитировать Сообщить модератору
 Re: понятие транзакции. просьба разъяснить.  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
alexeyvg
Yasha123
пропущено...

а я где-то такое утверждаю?
Да, вот тут:
Yasha123
я утверждаю, что написанный вами код, это 3 транзакции.



и буду на этом настаивать.
ваш код НЕ содержит SET IMPLICIT_TRANSACTIONS ON.
а ведь вы его выполнили.
так что это все равно, что написать BEGIN TRY и не показать.

еще раз:
показанный вами код -- это 3(три) транзакции.
а все остальное лишь демагогия
26 июл 18, 14:57    [21604738]     Ответить | Цитировать Сообщить модератору
 Re: понятие транзакции. просьба разъяснить.  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
*** BEGIN TRY постом выше читать как BEGIN TRAN
26 июл 18, 15:01    [21604754]     Ответить | Цитировать Сообщить модератору
 Re: понятие транзакции. просьба разъяснить.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30778
Yasha123
и буду на этом настаивать.
ваш код НЕ содержит SET IMPLICIT_TRANSACTIONS ON.
Да он вообще никаких SET не содержит, а они есть, потому что есть коннект, и при нём всегда есть SET-ы
26 июл 18, 15:05    [21604769]     Ответить | Цитировать Сообщить модератору
 Re: понятие транзакции. просьба разъяснить.  [new]
KRS544
Member

Откуда:
Сообщений: 497
andron81,
26 июл 18, 15:05    [21604772]     Ответить | Цитировать Сообщить модератору
 Re: понятие транзакции. просьба разъяснить.  [new]
KRS544
Member

Откуда:
Сообщений: 497
andron81,
link
26 июл 18, 15:06    [21604781]     Ответить | Цитировать Сообщить модератору
 Re: понятие транзакции. просьба разъяснить.  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
alexeyvg
Yasha123
и буду на этом настаивать.
ваш код НЕ содержит SET IMPLICIT_TRANSACTIONS ON.
Да он вообще никаких SET не содержит, а они есть, потому что есть коннект, и при нём всегда есть SET-ы

и эти сеты дефолтные.
а чтобы это изменить, уж простите, сет вы выполнили в явном виде
26 июл 18, 15:24    [21604862]     Ответить | Цитировать Сообщить модератору
 Re: понятие транзакции. просьба разъяснить.  [new]
andron81
Member

Откуда: Смоленск
Сообщений: 787
invm
andron81
я всегда считал, что select делает выборку, читает данные.
А читать это не затрагивать?
andron81
Тогда для пущей каши расскажите что будет результатом отката "select" ???
Чтобы избавиться от каши, начните с правильного определения транзакции. Например тут.


Не надо так уж умничать тут. С чего вы взяли , что ваше определение по ссылке верное?
Не противоречит ли оно тому, что пишет парень про бэкапы и что включается в транзакцию.

Вот он пишет :
Те операции, которые были включены в транзакцию, можно подтвердить или откатить. А те, которые не были включены в транзакцию, не поменяли данные, и в транзакцию не включились, на неё не повлияли. Не хотите ему ссылку эту дать?

Вот и ответьте теперь на мой ранний вопрос , что будет результатом отката select ?
26 июл 18, 17:48    [21605579]     Ответить | Цитировать Сообщить модератору
 Re: понятие транзакции. просьба разъяснить.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36694
andron81
С чего вы взяли , что ваше определение по ссылке верное?
А в вас встроен определятор верности определения транзакции? С чего вы вообще взяли, что обязательно есть какое-то одно правильное определение транзакции, а все остальные неверные?

И вообще, зачем вам это определение? Чтобы убедиться, что какая-та ваша книжка по какой-то там СУБД (если вообще по СУБД) -- г..но?

andron81
Вот и ответьте теперь на мой ранний вопрос , что будет результатом отката select ?
А что будет результатом отката delete ... where 1 = 0? Или delete это не всегда транзакция? А почему команда set transaction isolation level кардинальным образом влияет на поведение select?
26 июл 18, 18:05    [21605672]     Ответить | Цитировать Сообщить модератору
 Re: понятие транзакции. просьба разъяснить.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36694
Ну и чтобы закончить спор, давайте узнаем, как считают разработчики MSSQL:

if @@trancount > 0
    rollback

set implicit_transactions on

select top 0 * from sys.sysobjects

select @@trancount

-----------
1
26 июл 18, 18:11    [21605681]     Ответить | Цитировать Сообщить модератору
 Re: понятие транзакции. просьба разъяснить.  [new]
invm
Member

Откуда: Москва
Сообщений: 9122
andron81
Не надо так уж умничать тут. С чего вы взяли , что ваше определение по ссылке верное?
Ну умничает тут, имхо, кто-то другой, пытаясь без наличия необходимых знаний оценивать верность определний.
andron81
Вот и ответьте теперь на мой ранний вопрос , что будет результатом отката select ?
Попытайтесь чего-нибудь вылить из пустой кастрюли. Результат и будет ответом на ваш вопрос.
26 июл 18, 18:38    [21605763]     Ответить | Цитировать Сообщить модератору
 Re: понятие транзакции. просьба разъяснить.  [new]
andron81
Member

Откуда: Смоленск
Сообщений: 787
Гавриленко Сергей Алексеевич,

ну если я не прав, так не прав. почитайте как называется моя тема - я разбираюсь.
тем не менее это не логично ! интересно что ж в этом случае пишется в журнал транзакций ?
26 июл 18, 18:39    [21605766]     Ответить | Цитировать Сообщить модератору
 Re: понятие транзакции. просьба разъяснить.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36694
andron81
Гавриленко Сергей Алексеевич,
интересно что ж в этом случае пишется в журнал транзакций ?
Зачем что-то писать в журнал, когда туда писать не нужно?
26 июл 18, 18:43    [21605774]     Ответить | Цитировать Сообщить модератору
 Re: понятие транзакции. просьба разъяснить.  [new]
andron81
Member

Откуда: Смоленск
Сообщений: 787
Гавриленко Сергей Алексеевич
andron81
Гавриленко Сергей Алексеевич,
интересно что ж в этом случае пишется в журнал транзакций ?
Зачем что-то писать в журнал, когда туда писать не нужно?


ну вот и где тут логика ? поэтому любой селект этонедотранзакция, если его нельзя откатить и нечего писать в журнал .
26 июл 18, 18:46    [21605783]     Ответить | Цитировать Сообщить модератору
 Re: понятие транзакции. просьба разъяснить.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30778
andron81
ну если я не прав, так не прав. почитайте как называется моя тема - я разбираюсь.
Вроде тема называется я разбираюсь, но вы яростно спорите с объяснениями, причём не находите какие то нестыковки в объясн5е6ниях, или не переспрашиваете непонятное, а отстаиваете своё понимание транзакций :-)

andron81
тем не менее это не логично ! интересно что ж в этом случае пишется в журнал транзакций ?
Да ничего не пишется.
Ещё раз - транзакция - это определённое состояние сервера/коннекта.
Вот, при SELECT сервер перешёл в это состояние, это где то отметилось в памяти, создался идентификатор транзакции, к нему привязались записи о блокировках (возможно - очень много записей, это тоже зависит от разного) и т.д.
andron81
ну вот и где тут логика ? поэтому любой селект этонедотранзакция, если его нельзя откатить и нечего писать в журнал .
Ну, можно назвать "недотранзакцией".
Но т.к. в документации сиквела разработчики не используют этот термин, а используют слово "транзакция", то мы это так и называем.
26 июл 18, 18:59    [21605824]     Ответить | Цитировать Сообщить модератору
 Re: понятие транзакции. просьба разъяснить.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36694
andron81
ну вот и где тут логика ? поэтому любой селект этонедотранзакция, если его нельзя откатить и нечего писать в журнал .
Вы не поверите, но delete, который ничего не удалил, в журнал тоже ничего не запишет. Как вам такая логика?

Сообщение было отредактировано: 26 июл 18, 19:03
26 июл 18, 19:02    [21605837]     Ответить | Цитировать Сообщить модератору
 Re: понятие транзакции. просьба разъяснить.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30778
andron81
Не противоречит ли оно тому, что пишет парень про бэкапы и что включается в транзакцию.

Вот он пишет :
Те операции, которые были включены в транзакцию, можно подтвердить или откатить. А те, которые не были включены в транзакцию, не поменяли данные, и в транзакцию не включились, на неё не повлияли. Не хотите ему ссылку эту дать?
Ну, я рассказывал про механизм транзакций в MSSQL.
Не буду спорить с теоретиками, по монографиям которых о теоретических транзакциях в ваакуме написали статью в энциклопедии, у менгя не хватит квалификации, да и желания нет.
Механизмы в других СУБД работают подобно механизмам MSSQL, так что для практического применения прислушайтесь к моим советам.
Но если вы должны сдать курсовик, или написать научную статью, то лучше изучать научные работы, а не механизмы MSSQL.
В общем, смотря какая цель.
26 июл 18, 19:06    [21605856]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить