Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 07:29 28.04.24 
Клубове/ Компютри и Интернет / Бази данни Всички теми Следваща тема Пълен преглед*
Информация за клуба
Тема Re: така де [re: Dakota]
Автор salle (един такъв)
Публикувано08.12.09 11:58  



В стандартите наистина нещата са описани много абстрактно.

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

Даваш ли си сметка, че ако SQL беше написан според твоите виждания операторът ROLLBACK нямаше да има право да съществува? А и COMMIT всъщност.

Замисли се над това преди да продължиш да четеш надолу.

очаквам СУБД да прави все пак нещо самичка, най-малкото да знае състоянието на собствената си транзакция, а не аз с външна логика да го определям.

Амииии ... аз пък (и повечето DBA които познавам) категорично не желая СУБД да си решава какво да прави.

По отношение на Атомарността ти явно си "по-католик от папата"



Практиката (и то осмелявам се да твърдя общоприетата) e да се преценява на ниво приложение коя грешка е критична и коя не и само при критични грешки да се връща всичко в изходно положение. Ако не друго може грешката да е временна и да бъде оправена с просто повтаряне на оператора вместа да се прави rollback на потенциално огромно количество данни.


Та, тук общо взето спорът се свежда до следното - какво точно означава командата commit?

И чия е отговорността?

За мен пускането на commit е равносилно на това да кажа на базата следното: "Виж сега, бях ти пуснал няколко команди в транзакция и искам сега да се опиташ да я завършиш успешно!"


Ето тук правиш огромна грешка! Ти разглеждаш многоредовата транзакция като нещо монолитно което пускаш и забравяш (сървъра да се оправя ако може) и отказваш да приемеш, че всъщност става въпрос за интерактивен процес.

Та оттам
какво точно означава командата commit?

Пишейки COMMIT поемаш цялата отговорност, че нещата са наред!

Ако си стигнал до момента в който изпращаш COMMIT това означава, че транзакцията все още е активна т.е. сървърът не е намерил причина за неявен ROLLBACK и си стигнал до точката в която казваш:

"Виж сега това дето го правихме дотук ред по ред според мен (клиентът) е OK, и затова го запази всичко като постоянно"

пишейки commit, базата не трябва да ми позволява да го правя, защото това противоречи на самата концепция за транзакция.


Категорично не си прав!

Няма как сървърът да ти откаже COMMIT. Ако нещо не е било наред с транзакцията сървърът вече е направил неявен ROLLBACK и твоят COMMIT вече се явява в контекста на следваща транзакция.

Точно затова съществуват два оператора за явно приключване на транзакция: COMMIT и ROLLBACK.

Тази двойка оператори дава на клиента контрол върху транзакцията и възможността за преценка дали наистина да се приеме една транзакция, която сървърът вече е сметнал за "добра".

Ако SQL беше изграден по твоята логика то и двата оператора COMMIT и ROLLBACK нямаше да съществуват.

Щеше да има START .... END -> черна кутия в която само сървърът еднолично решава какво да се случи.



Цялата тема
ТемаАвторПубликувано
* Транзакции в MySQL 5.0 Dakota   30.11.09 15:30
. * Re: Транзакции в MySQL 5.0 wqw   01.12.09 01:36
. * Re: Транзакции в MySQL 5.0 salle   05.12.09 01:10
. * така де Dakota   07.12.09 13:42
. * Re: така де salle   07.12.09 14:41
. * Re: така де wqw   07.12.09 15:14
. * Re: така де Dakota   07.12.09 19:07
. * Re: така де Aaron   07.12.09 20:49
. * Re: така де salle   08.12.09 11:58
. * прехвърляне на топката Dakota   09.12.09 18:10
. * Re: прехвърляне на топката Aaron   09.12.09 23:48
. * Re: прехвърляне на топката wqw   10.12.09 02:13
. * Re: прехвърляне на топката salle   10.12.09 11:49
. * Re: прехвърляне на топката Dakota   10.12.09 12:14
. * Re: прехвърляне на топката salle   10.12.09 11:42
. * Re: прехвърляне на топката Dakota   10.12.09 12:13
. * Re: прехвърляне на топката bira_more   10.12.09 20:27
. * Re: прехвърляне на топката salle   12.12.09 17:39
. * Re: прехвърляне на топката Dakota   13.12.09 01:34
. * Re: прехвърляне на топката wqw   13.12.09 01:41
. * Re: прехвърляне на топката salle   13.12.09 18:13
. * Re: прехвърляне на топката NDeu   14.12.09 09:29
. * Re: прехвърляне на топката salle   14.12.09 16:57
. * окей Dakota   15.12.09 12:45
. * Re: окей wqw   15.12.09 12:52
. * Re: окей Dakota   15.12.09 14:53
. * Re: окей wqw   16.12.09 12:15
. * Re: окей wqw   16.12.09 12:17
. * Re: окей Dakota   16.12.09 13:34
. * Re: окей wqw   16.12.09 13:39
. * Re: окей Dakota   16.12.09 15:04
. * Re: окей wqw   16.12.09 15:24
. * Re: окей Dakota   16.12.09 16:23
. * Re: Транзакции в MySQL 5.0 Aaron   06.12.09 13:02
. * Re: Транзакции в MySQL 5.0 salle   07.12.09 13:10
. * Re: Транзакции в MySQL 5.0 Aaron   07.12.09 18:42
. * Re: Транзакции в MySQL 5.0 salle   08.12.09 10:33
. * Re: Транзакции в MySQL 5.0 Aaron   08.12.09 10:51
. * Re: Транзакции в MySQL 5.0 sonic86   28.12.09 21:25
. * Re: Транзакции в MySQL 5.0 Aaron   29.12.09 09:48
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.