Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
Добрый всем день. Не могли бы вы мне тут помочь в освоении такой важной темы как транзакция ? просто для того чтобы овладеть глубоко этим понятием нужно сталкиваться с ними в реальной многопользовательской программе , а у меня такой возможности нет. Как известно транзакция задает последовательность инструкций языка Transact-SQL, применяемую для объединения в один пакет операций чтения и записи для того, чтобы система базы данных могла обеспечить согласованность данных. (откопипастил первое попавшееся определение) сразу вопрос что подрумянивается под инструкциями ? к примеру есть несколько инсертов. insert insert insert Вопрос: тут что будет являться транзакцией каждый такой insert или же весь блок с инсертами или что иное или же пример не подходит (тогда большая просьба дать свой пример) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 11:53 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
такой блок будет одной транзакцией: begin tran insert insert insert commit tran ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 12:01 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
andron81Как известно транзакция задает последовательность инструкций языка Transact-SQL, применяемую для объединения в один пакет операций чтения и записи для того, чтобы система базы данных могла обеспечить согласованность данных. (откопипастил первое попавшееся определение) сразу вопрос что подрумянивается под инструкциями ?Под инструкцией подразумевается любая команда доступа к данным. Транзакцию можно задатьь на блок инструкций, например, явно начав её командой begin tran, либо на каждую отдельную инструкцию, тогда она начнётся сама - инструкция без транзакции выполнена быть не может. andron81к примеру есть несколько инсертов. insert insert insert Вопрос: тут что будет являться транзакцией каждый такой insert или же весь блок с инсертами или что иное Если этот блок выполнялся в общей транзакции, то весь блок, и даже инструкции потом (время и объём транзакции не ограничены), а если общий транзакции нет, и если не задан режим автоначала транзакции, то каждая инструкция будет выполняться в своей транзакции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 12:03 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
L_argoтакой блок будет одной транзакцией: begin tran insert insert insert commit tranИли такой: insert insert insert ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 12:04 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
alexeyvgL_argoтакой блок будет одной транзакцией: begin tran insert insert insert commit tranИли такой: insert insert insert это 3 транзакции, а не 1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 12:12 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
L_argo, спасибо за ответы :) тогда следующий вопрос : Свойство атомарности обеспечивает неделимость набора инструкций, который модифицирует данные в базе данных и является частью транзакции. Это означает, что или выполняются все изменения данных в транзакции, или в случае любой ошибки осуществляется откат всех выполненных изменений. если мне необходимо объединить несколько инсертов в транзакцию , а по свойству атомарности транзакция , либо выполняется , либо откатывается даже прошлые успешные действия в ней. то я организовываю исходя из определений транзакции и атомарности так : Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. тут у меня и недопонимания. если конфликт произойдет скажем на третьем апдейте , то что произойдет ? откатятся первый и второй - вряд ли .... как должен выглядеть код исходя из определений транзакции и атомарности ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 12:23 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
andron81, @@ERROR только на последнюю инструкцию https://docs.microsoft.com/en-us/sql/t-sql/language-elements/try-catch-transact-sql?view=sql-server-2017 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 12:27 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 12:28 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
andron81, почитай ещё про SET XACT_ABORT {ON|OFF} Всё откатится при ошибке, если этот параметр равен ON. В предыдущих версиях по умолчанию Microsoft его устанавливал зачем-то в OFF. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 12:38 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
iap, да нет. я всё это почитаю , конечно . спасибо. как правильно сделать я догадываюсь Я хочу прояснить это для себя. просто я не пойму : вот есть определение транзакции, атомарности. четко и ясно написано : набор команд который рассматривается как единое целое кот. может выполнится , а может нет - в последнем случае откат. но почему я должен в этом случае юзать всякие велосипеды типа @@ERROR или вот catch ?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 12:46 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
Yasha123alexeyvgпропущено... Или такой: insert insert insert это 3 транзакции, а не 1С чего это, если установлена опция автоначала транзакции? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 12:54 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
TaPaKandron81, @@ERROR только на последнюю инструкцию https://docs.microsoft.com/en-us/sql/t-sql/language-elements/try-catch-transact-sql?view=sql-server-2017 так в этом то и суть. с чего вообще @@ERROR этот нужен ? определение транзакции это набор инструкций которые совершают модификацию с б.д. (insert, update, delete). какие там проверки на @@ERROR ? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 12:56 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
andron81TaPaKandron81, @@ERROR только на последнюю инструкцию https://docs.microsoft.com/en-us/sql/t-sql/language-elements/try-catch-transact-sql?view=sql-server-2017 так в этом то и суть. с чего вообще @@ERROR этот нужен ? определение транзакции это набор инструкций которые совершают модификацию с б.д. (insert, update, delete). какие там проверки на @@ERROR ? :)\ есть люди, которые предпочитают управлят такими вещами как откаты и тп ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 12:59 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
TaPaKandron81пропущено... так в этом то и суть. с чего вообще @@ERROR этот нужен ? определение транзакции это набор инструкций которые совершают модификацию с б.д. (insert, update, delete). какие там проверки на @@ERROR ? :)\ есть люди, которые предпочитают управлят такими вещами как откаты и тп тогда и определение транзакций должно быть другим . имхо )))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 13:01 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
andron81да нет. я всё это почитаю , конечно . спасибо. как правильно сделать я догадываюсь Я хочу прояснить это для себя.Предыдущие ответы как раз описывают, что произойдёт, т.к. это зависит от настроек сервера и коннекта. andron81просто я не пойму : вот есть определение транзакции, атомарности. четко и ясно написано : набор команд который рассматривается как единое целое кот. может выполнится , а может нет - в последнем случае откат. но почему я должен в этом случае юзать всякие велосипеды типа @@ERROR или вот catch ??Потому что разные варианты обработки не нарушают эту целостность и атомарность. Понимаете, "транзакция" - это не декларативное понятие, типа как трай-кэтч в разных ЯП, типа "указание рассматривать этот блок как единое целое", это некая команда серверу, потому что для идеологии существующих СУБД декларативно сделать транзакцию принципиально невозможно. Если же вы рассмотрите транзакцию как команду перевода сервера (коннекта) в некий статус, то всё встанет на свои места. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 13:02 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
alexeyvgYasha123пропущено... это 3 транзакции, а не 1С чего это, если установлена опция автоначала транзакции? авто_кто установлен? --- наверное с того, что если кто-то использует что-то, отличное от общепринятых умолчаний, то об этом надо сообщать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 13:06 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
andron81определение транзакции это набор инструкций которые совершают модификацию с б.д. (insert, update, delete). какие там проверки на @@ERROR ? :)Нет, это не так, и важно, что сделать так принципиально неосуществимо. Потому что нет "набора инструкций" для сервера, если команды, которые по очереди передаются по сети в сервер. А вы при этом управляете статусом. Например, в вашем примере Код: sql 1. 2. 3. 4. 5. 6. Скажем, BOOK_SALES2 завершилось неудачно, с ошибкой. Помня о том, что транзакция - это некое состояние, можем ли мы продолжить обновлять BOOK_SALES3 и 4 в той же транзакции? Да, можем, почему бы и нет, если нам это нужно. Но если не хотим такого поведения, то режим SET XACT_ABORT ON может откатить транзакцию и завершить весь батч. В общем, всё достаточно гибко и управляемо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 13:07 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
Yasha123alexeyvgпропущено... С чего это, если установлена опция автоначала транзакции? авто_кто установлен? --- наверное с того, что если кто-то использует что-то, отличное от общепринятых умолчаний, то об этом надо сообщать?Наверное, не надо обобщённо утверждать, что если нет стейтмента BEGIN TRANSACTION, то три инсёрта будут тремя разными транзакциями ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 13:08 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
alexeyvgСкажем, BOOK_SALES2 завершилось неудачно, с ошибкой. Помня о том, что транзакция - это некое состояние, можем ли мы продолжить обновлять BOOK_SALES3 и 4 в той же транзакции? Да, можем, почему бы и нет, если нам это нужно. да, почему бы и нет. допускаю, что это не нарушает определение транзакции. Но в этом случае дойдя до конца, мы всё равно должны сделать откат. иначе нарушается условие атомарности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 13:15 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
andron81alexeyvgСкажем, BOOK_SALES2 завершилось неудачно, с ошибкой. Помня о том, что транзакция - это некое состояние, можем ли мы продолжить обновлять BOOK_SALES3 и 4 в той же транзакции? Да, можем, почему бы и нет, если нам это нужно. да, почему бы и нет. допускаю, что это не нарушает определение транзакции. Но в этом случае дойдя до конца, мы всё равно должны сделать откат. иначе нарушается условие атомарности. я так понимаю вы оглавление в книге по sql прочитали, дальше не приступали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 13:22 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
alexeyvgYasha123пропущено... авто_кто установлен? --- наверное с того, что если кто-то использует что-то, отличное от общепринятых умолчаний, то об этом надо сообщать?Наверное, не надо обобщённо утверждать, что если нет стейтмента BEGIN TRANSACTION, то три инсёрта будут тремя разными транзакциями а я где-то такое утверждаю? я вообще не спрашиваю, есть ли у вас BEGIN TRAN, может есть строкой выше, и вы его не показываете из вредности. я утверждаю, что написанный вами код, это 3 транзакции. а если это лишь кусок кода, то уж простите, ваши проблемы, что вы не показали BEGIN TRAN или SET IMPLICIT_TRANSACTIONS ON ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 13:23 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
TaPaKandron81пропущено... да, почему бы и нет. допускаю, что это не нарушает определение транзакции. Но в этом случае дойдя до конца, мы всё равно должны сделать откат. иначе нарушается условие атомарности. я так понимаю вы оглавление в книге по sql прочитали, дальше не приступали? у меня книга одна , она вообще дебильная . по их определению и "select * from table" это тоже является транзакцией. стоит ли читать такую книгу ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 13:25 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
andron81, ну вы сначала прочитали данные, на их основе сделали какие-то подсчеты, потом пытаетесь внести изменения, а тут бац, ваш select выдает уже совершенно другие данные... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 13:47 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
KRS544andron81, ну вы сначала прочитали данные, на их основе сделали какие-то подсчеты, потом пытаетесь внести изменения, а тут бац, ваш select выдает уже совершенно другие данные... это к чему ? не могу уловить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 13:49 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
andron81KRS544andron81, ну вы сначала прочитали данные, на их основе сделали какие-то подсчеты, потом пытаетесь внести изменения, а тут бац, ваш select выдает уже совершенно другие данные... это к чему ? не могу уловить он тоже только оглавление прочитал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 13:50 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
TaPaK, дайте название книги где это всё нормально расписано. а то не знаю в какой почитать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 13:55 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
andron81у меня книга одна , она вообще дебильная . по их определению и "select * from table" это тоже является транзакциейВидимо для вас MSSQL будет "дебильным" сервером, ибо в нем любая инструкция, затрагивающая данные, выполняется в транзакции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 14:34 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
invmandron81у меня книга одна , она вообще дебильная . по их определению и "select * from table" это тоже является транзакциейВидимо для вас MSSQL будет "дебильным" сервером, ибо в нем любая инструкция, затрагивающая данные, выполняется в транзакции. то есть по вашему "select" затрагивает данные ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 14:37 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
andron81invmпропущено... Видимо для вас MSSQL будет "дебильным" сервером, ибо в нем любая инструкция, затрагивающая данные, выполняется в транзакции. то есть по вашему "select" затрагивает данные ? да ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 14:39 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
TaPaK, я всегда считал, что select делает выборку, читает данные. Тогда для пущей каши расскажите что будет результатом отката "select" ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 14:42 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
Yasha123alexeyvgНаверное, не надо обобщённо утверждать, что если нет стейтмента BEGIN TRANSACTION, то три инсёрта будут тремя разными транзакциями а я где-то такое утверждаю?Да, вот тут: Yasha123я утверждаю, что написанный вами код, это 3 транзакции. Ибо если включён SET IMPLICIT_TRANSACTIONS ON, то после первого инсёрта начнётся общая транзакция, в которой будет выполняться в том числе и третий инсёрт. И вот тут не прокатывает "а если это лишь кусок кода, то уж простите, ваши проблемы", потому что это не кусок кода, а весь код, а статус IMPLICIT_TRANSACTIONS ON - это не код, а установка коннекта; возможно, все коннекты в системе имеют такую установку. И более того, корректно будет считать это "полным кодом" при запуске такого батча из клиента, при том, что из клиента до этого выполнялись другие батчи,и, в частности, была начата транзакция. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 14:48 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
andron81, я может быть туплю, но я считал, что транзакция это инструкция которая вносит правки в б.д. select - выборки которые не делают ничего в б.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 14:49 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
andron81я всегда считал, что select делает выборку, читает данные.А читать это не затрагивать? andron81Тогда для пущей каши расскажите что будет результатом отката "select" ???Чтобы избавиться от каши, начните с правильного определения транзакции. Например тут . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 14:51 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
andron81Но в этом случае дойдя до конца, мы всё равно должны сделать откат. иначе нарушается условие атомарности.Я же вам говорю, условие атомарности не нарушится, потому что транзакция не декларативна. Она не охватывает те операции, которые написаны программистом между begin и commit. Те операции, которые были включены в транзакцию, можно подтвердить или откатить. А те, которые не были включены в транзакцию, не поменяли данные, и в транзакцию не включились, на неё не повлияли. andron81Как известно транзакция задает последовательность инструкций языка Transact-SQL, применяемую для объединения в один пакет операций чтения и записи для того, чтобы система базы данных могла обеспечить согласованность данных. (откопипастил первое попавшееся определение)Из этого можно понять, что транзакция есть нечто декларативное, как указание, что эти стейтменты должны выполнится как единое целое. Но это неправильное определение. Вы лучше представьте, что это некое последовательность бакапов диска. Вы сделали бакап, потом на диск пишете, читаете, какие то записи завершаются с ошибкой... Потом опять пишите... А потом принимаете решение - сделать очередной бакап, или восстановить последний. Вот это есть подтвердить или откатить транзакцию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 14:56 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
alexeyvgYasha123пропущено... а я где-то такое утверждаю?Да, вот тут: Yasha123я утверждаю, что написанный вами код, это 3 транзакции. и буду на этом настаивать. ваш код НЕ содержит SET IMPLICIT_TRANSACTIONS ON. а ведь вы его выполнили. так что это все равно, что написать BEGIN TRY и не показать. еще раз: показанный вами код -- это 3(три) транзакции. а все остальное лишь демагогия ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 14:57 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
*** BEGIN TRY постом выше читать как BEGIN TRAN ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 15:01 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
Yasha123и буду на этом настаивать. ваш код НЕ содержит SET IMPLICIT_TRANSACTIONS ON.Да он вообще никаких SET не содержит, а они есть, потому что есть коннект, и при нём всегда есть SET-ы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 15:05 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
andron81, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 15:05 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
andron81, link ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 15:06 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
alexeyvgYasha123и буду на этом настаивать. ваш код НЕ содержит SET IMPLICIT_TRANSACTIONS ON.Да он вообще никаких SET не содержит, а они есть, потому что есть коннект, и при нём всегда есть SET-ы и эти сеты дефолтные. а чтобы это изменить, уж простите, сет вы выполнили в явном виде ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 15:24 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
invmandron81я всегда считал, что select делает выборку, читает данные.А читать это не затрагивать? andron81Тогда для пущей каши расскажите что будет результатом отката "select" ???Чтобы избавиться от каши, начните с правильного определения транзакции. Например тут . Не надо так уж умничать тут. С чего вы взяли , что ваше определение по ссылке верное? Не противоречит ли оно тому, что пишет парень про бэкапы и что включается в транзакцию. Вот он пишет : Те операции, которые были включены в транзакцию, можно подтвердить или откатить. А те, которые не были включены в транзакцию, не поменяли данные, и в транзакцию не включились, на неё не повлияли. Не хотите ему ссылку эту дать? Вот и ответьте теперь на мой ранний вопрос , что будет результатом отката select ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 17:48 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
andron81С чего вы взяли , что ваше определение по ссылке верное? А в вас встроен определятор верности определения транзакции? С чего вы вообще взяли, что обязательно есть какое-то одно правильное определение транзакции, а все остальные неверные? И вообще, зачем вам это определение? Чтобы убедиться, что какая-та ваша книжка по какой-то там СУБД (если вообще по СУБД) -- г..но? andron81Вот и ответьте теперь на мой ранний вопрос , что будет результатом отката select ?А что будет результатом отката delete ... where 1 = 0? Или delete это не всегда транзакция? А почему команда set transaction isolation level кардинальным образом влияет на поведение select? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 18:05 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
Ну и чтобы закончить спор, давайте узнаем, как считают разработчики MSSQL: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 18:11 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
andron81Не надо так уж умничать тут. С чего вы взяли , что ваше определение по ссылке верное?Ну умничает тут, имхо, кто-то другой, пытаясь без наличия необходимых знаний оценивать верность определний. andron81Вот и ответьте теперь на мой ранний вопрос , что будет результатом отката select ?Попытайтесь чего-нибудь вылить из пустой кастрюли. Результат и будет ответом на ваш вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 18:38 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей Алексеевич, ну если я не прав, так не прав. почитайте как называется моя тема - я разбираюсь. тем не менее это не логично ! интересно что ж в этом случае пишется в журнал транзакций ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 18:39 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
andron81Гавриленко Сергей Алексеевич, интересно что ж в этом случае пишется в журнал транзакций ?Зачем что-то писать в журнал, когда туда писать не нужно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 18:43 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей Алексеевичandron81Гавриленко Сергей Алексеевич, интересно что ж в этом случае пишется в журнал транзакций ?Зачем что-то писать в журнал, когда туда писать не нужно? ну вот и где тут логика ? поэтому любой селект этонедотранзакция, если его нельзя откатить и нечего писать в журнал . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 18:46 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
andron81ну если я не прав, так не прав. почитайте как называется моя тема - я разбираюсь.Вроде тема называется я разбираюсь, но вы яростно спорите с объяснениями, причём не находите какие то нестыковки в объясн5е6ниях, или не переспрашиваете непонятное, а отстаиваете своё понимание транзакций :-) andron81тем не менее это не логично ! интересно что ж в этом случае пишется в журнал транзакций ?Да ничего не пишется. Ещё раз - транзакция - это определённое состояние сервера/коннекта. Вот, при SELECT сервер перешёл в это состояние, это где то отметилось в памяти, создался идентификатор транзакции, к нему привязались записи о блокировках (возможно - очень много записей, это тоже зависит от разного) и т.д. andron81ну вот и где тут логика ? поэтому любой селект этонедотранзакция, если его нельзя откатить и нечего писать в журнал .Ну, можно назвать "недотранзакцией". Но т.к. в документации сиквела разработчики не используют этот термин, а используют слово "транзакция", то мы это так и называем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 18:59 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
andron81ну вот и где тут логика ? поэтому любой селект этонедотранзакция, если его нельзя откатить и нечего писать в журнал .Вы не поверите, но delete, который ничего не удалил, в журнал тоже ничего не запишет. Как вам такая логика? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 19:02 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
andron81Не противоречит ли оно тому, что пишет парень про бэкапы и что включается в транзакцию. Вот он пишет : Те операции, которые были включены в транзакцию, можно подтвердить или откатить. А те, которые не были включены в транзакцию, не поменяли данные, и в транзакцию не включились, на неё не повлияли. Не хотите ему ссылку эту дать?Ну, я рассказывал про механизм транзакций в MSSQL. Не буду спорить с теоретиками, по монографиям которых о теоретических транзакциях в ваакуме написали статью в энциклопедии, у менгя не хватит квалификации, да и желания нет. Механизмы в других СУБД работают подобно механизмам MSSQL, так что для практического применения прислушайтесь к моим советам. Но если вы должны сдать курсовик, или написать научную статью, то лучше изучать научные работы, а не механизмы MSSQL. В общем, смотря какая цель. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 19:06 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей Алексеевичandron81ну вот и где тут логика ? поэтому любой селект этонедотранзакция, если его нельзя откатить и нечего писать в журнал .Вы не поверите, но delete, который ничего не удалил, в журнал тоже ничего не запишет. Как вам такая логика?Тогда "транзакция" волшебным образом превращается в "недотранзакцию" :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 19:07 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
alexeyvgГавриленко Сергей Алексеевичпропущено... Вы не поверите, но delete, который ничего не удалил, в журнал тоже ничего не запишет. Как вам такая логика?Тогда "транзакция" волшебным образом превращается в "недотранзакцию" :-)Осталось понять, зачем отличать "транзакции" от "недотранзакций" в зависимости от того, произошла ли в них модификация данных или нет. У меня вот не выходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 19:08 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей Алексеевичalexeyvgпропущено... Тогда "транзакция" волшебным образом превращается в "недотранзакцию" :-)Осталось понять, зачем отличать "транзакции" от "недотранзакций" в зависимости от того, произошла ли в них модификация данных или нет. У меня вот не выходит. зачем, а вот на собеседовании как бы Вы ответили ? что называется транзакцией и является ли транзакция select * from table транзакцией с точки зрения MS SQL Server. товарищ правда для Postgre сказал , что да является. и был получен минус ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 19:15 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей Алексеевичalexeyvgпропущено... Тогда "транзакция" волшебным образом превращается в "недотранзакцию" :-)Осталось понять, зачем отличать "транзакции" от "недотранзакций" в зависимости от того, произошла ли в них модификация данных или нет. У меня вот не выходит.Ну, если понимать транзакцию как некое "декларативное объявление атомарного изменения состояния информационной системы", то вполне можно так говорить. Транзакция, которая не изменяла данных, просто-напросто не существовала, при таком взгляде. Но для реальной СУБД, даже так - для реальной информационной системы, разницы действительно никакой, это определённые статусы, структуры данных, идентификаторы и т.д., и при разных операциях, участвующих в транзакции, просто будут количественно разные действия в системе - но не качественно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 19:15 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
alexeyvgГавриленко Сергей Алексеевичпропущено... Осталось понять, зачем отличать "транзакции" от "недотранзакций" в зависимости от того, произошла ли в них модификация данных или нет. У меня вот не выходит.Ну, если понимать транзакцию как некое "декларативное объявление атомарного изменения состояния информационной системы", то вполне можно так говорить. Транзакция, которая не изменяла данных, просто-напросто не существовала, при таком взгляде. Но для реальной СУБД, даже так - для реальной информационной системы, разницы действительно никакой, это определённые статусы, структуры данных, идентификаторы и т.д., и при разных операциях, участвующих в транзакции, просто будут количественно разные действия в системе - но не качественно. что значит декларативное ? прокомментируйте , пож ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 19:18 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
andron81зачем, а вот на собеседовании как бы Вы ответили ?На собеседовании я бы постарался ответить так, как понравится спрашивающему. Угадать сложно, это да. Я практик, и если в доке написано, что SELECT выполняется в транзакции, значит для меня так и есть. Но если спрашивает ХР-менеджер по листочку с цитатами из учебника, то мой ответ может ему не понравится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 19:19 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
andron81зачем, а вот на собеседовании как бы Вы ответили ? ... является ли транзакция select * from table транзакцией с точки зрения MS SQLЯ бы сказал, что в MSDN английским по-белому написано, что: https://docs.microsoft.com/en-us/sql/t-sql/language-elements/transactions-transact-sql?view=sql-server-2017 Autocommit transactions Each individual statement is a transaction. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 19:20 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
andron81alexeyvgпропущено... Ну, если понимать транзакцию как некое "декларативное объявление атомарного изменения состояния информационной системы", то вполне можно так говорить. Транзакция, которая не изменяла данных, просто-напросто не существовала, при таком взгляде. Но для реальной СУБД, даже так - для реальной информационной системы, разницы действительно никакой, это определённые статусы, структуры данных, идентификаторы и т.д., и при разных операциях, участвующих в транзакции, просто будут количественно разные действия в системе - но не качественно. что значит декларативное ? прокомментируйте , пожДекларативное - значит, описательное. Вот SQL - декларативный язык, стейтмент, например, SELECT, или DELETE, или другой, не описывает последовательность действий, он описывает желаемый результат, который вы задекларировали, написав запрос. А вот T-SQL - это императивный язык, а не декларативный, хотя и состоит из декларативных стейтментов. То есть вы описываете последовательность действий, и эти действия выполняются, одно за другим, причём вы можете даже менять эту последовательность, например, операторами IF и т.п. Т.о. если бы транзакция была декларативной, то вот этот блок описывал бы конечный результат - атомарно привести систему из состояния ДО в состояние ПОСЛЕ: Код: sql 1. 2. 3. 4. 5. 6. Но т.к. T-SQL - императивный язык, то операции выполняются последовательно: Сначала, первой командой, начинается транзакция. Нету никаких записей в лог, никаких изменений, даже нет SELECT-а, но транзакция уже есть. Потом в контексте этой транзакции выполняется update BOOK_PURCH1. При этом может быть запись в лог, может и не быть. Потом в контексте этой транзакции выполняется update BOOK_SALES2, допустим, запись произошла неудачно, изменения не состоялись - и дальше вам, программисту, решать, считать вашу транзакцию неудачной в целом, и откатить (в т.ч. установкой параметра коннекта - откатывать при любых ошибках), или спокойно продолжить делать другие изменения. Потому что язык T-SQL - императивный, программист сам управляет ходом выполнения программы, а не описывает некий атомарный пакет изменения состояния. Разумеется, всё это совершенно не согласуется с определением транзакции у Дейта или в Вики, но мы же разбираемся в транзакциях MSSQL, а не в чём то ещё? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 19:32 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
alexeyvgДекларативное - значит, описательное.Вообще, думаю, неудачный термин, может, правильнее говорить - "функциональный"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 19:35 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
ладно, уяснили. Короче говоря транзакция по MS это each individual statement. любой оператор, а значит любое действие над базой : чтение , изменение. Всё ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2018, 19:39 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
alexeyvgalexeyvgДекларативное - значит, описательное.Вообще, думаю, неудачный термин, может, правильнее говорить - "функциональный"? Не, функциональный - это другое: ЯП, оперирующий функциями в мат. интерпретации. Чистые функции, функции высшего порядка, лямбда-исчисление, и проч. Это лисп, хаскелл, эрланг, F#, и иже с ними. Это всё одинаково далеко и от декларативных, и императивных ЯП. andron81ладно, уяснили. Короче говоря транзакция по MS это each individual statement. любой оператор, а значит любое действие над базой : чтение , изменение. Всё ! И даже вот это? Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2018, 06:18 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
Сон Веры Павловны, разрушим психологию :) Код: sql 1. тоже не транзакция ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2018, 08:48 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
TaPaK, да и тут вы правы. трындец полный с этими транзакциями. по их определению любой код это транзакция . ваш - нет. Строгости нет у MS в этом плане. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2018, 09:05 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
andron81TaPaK, да и тут вы правы. трындец полный с этими транзакциями. по их определению любой код это транзакция . ваш - нет. Строгости нет у MS в этом плане. всё описано, то что вы взяли самое понятное для вас объяснение и натягиваете сову на глобус, то это ваша проблема а не ms ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2018, 09:06 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
TaPaKandron81TaPaK, да и тут вы правы. трындец полный с этими транзакциями. по их определению любой код это транзакция . ваш - нет. Строгости нет у MS в этом плане. всё описано, то что вы взяли самое понятное для вас объяснение и натягиваете сову на глобус, то это ваша проблема а не ms и где же описано ? вот у них этим всё сказано : Each individual statement is a transaction. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2018, 09:08 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
andron81TaPaKпропущено... всё описано, то что вы взяли самое понятное для вас объяснение и натягиваете сову на глобус, то это ваша проблема а не ms и где же описано ? вот у них этим всё сказано : Each individual statement is a transaction. например вот https://docs.microsoft.com/en-us/sql/t-sql/statements/set-implicit-transactions-transact-sql?view=sql-server-2017 авторSELECT statements that do not select from a table do not start implicit transactions. For example SELECT GETDATE(); or SELECT 1, 'ABC'; do not require transactions. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2018, 09:13 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
ну и в тему когда писать авторAlthough BEGIN TRANSACTION starts a local transaction, it is not recorded in the transaction log until the application subsequently performs an action that must be recorded in the log, such as executing an INSERT, UPDATE, or DELETE statement. An application can perform actions such as acquiring locks to protect the transaction isolation level of SELECT statements, but nothing is recorded in the log until the application performs a modification action. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2018, 09:15 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
вот ещё немного занимательного Код: sql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2018, 09:20 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
ппц. ИТ-загибаеццо. Жевать на 3 страницы такое простое понятие.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2018, 09:38 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
L_argoппц. ИТ-загибаеццо. Жевать на 3 страницы такое простое понятие.... давай, внеси свет в эту пещеру ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2018, 09:40 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
TaPaKвот ещё немного занимательного Код: sql 1. 2. 3. 4. 5. 6. 7. это значит что инсерт во временную таблицу как бы не транзакция ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2018, 10:45 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
andron81это значит что инсерт во временную таблицу как бы не транзакция а где там временная таблица? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2018, 10:47 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
TaPaKandron81это значит что инсерт во временную таблицу как бы не транзакция а где там временная таблица? тупанул. в переменную таблица. это такой же пример как и с DECLARE @a int; SELECT @a = 1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2018, 10:51 |
|
||
|
понятие транзакции. просьба разъяснить.
|
|||
|---|---|---|---|
|
#18+
andron81тупанул. в переменную таблица. это такой же пример как и с DECLARE @a int; SELECT @a = 1Я вам уже писал - 21604617 , но, видимо, есть трудности с пониманием. Пример от TaPaK означает, что манипуляции с табличной переменнлой выполняются в отдельной транзакции, не относящейся к текущей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2018, 11:46 |
|
||
|
|

start [/forum/topic.php?all=1&fid=46&tid=1689353]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
147ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
119ms |
get tp. blocked users: |
1ms |
| others: | 227ms |
| total: | 546ms |

| 0 / 0 |
