powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Java [игнор отключен] [закрыт для гостей] / Фаулер. Оптимистическая блокировка в рамках бизнес-транзакции охватывающей несколько систе
25 сообщений из 156, страница 3 из 7
Фаулер. Оптимистическая блокировка в рамках бизнес-транзакции охватывающей несколько систе
    #39876694
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и опять таки, к "времени жизни" оптимистической блокировке это отношения имеет чуть меньше, чем никакого

Т.к. никто не мешает мне кэшировать объекты СУБД полученные SELECT'ом хоть со времен царя гороха, хоть со времен позапрошлого включения сервера СУБД, хоть еще более ранних времен. Хранить их версию, обрабатывать, а проверять/инвалидировать кэшь только в момент конфликтов. Такая себе оптимистично-при-оптимистичная блокировка. И, ровно для этого, оптимистичная блокировка и придумана IMHO. Да и называется так же - "оптимистичная". Храним старые-престарые данные и оптимистично надеемся, что они хорошие.
...
Рейтинг: 0 / 0
Фаулер. Оптимистическая блокировка в рамках бизнес-транзакции охватывающей несколько систе
    #39876698
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevНачинает ли команда SELECT новую транзакцию
конечно, ведь уровень изоляции стартуемой транзакции определяет какие данные этот select увидит, разве нет?
...
Рейтинг: 0 / 0
Фаулер. Оптимистическая блокировка в рамках бизнес-транзакции охватывающей несколько систе
    #39876699
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevСУБД начинаются неявнода. И боюсь фаулер в такие тонкости не опускается.
Его задача - концепция)
...
Рейтинг: 0 / 0
Фаулер. Оптимистическая блокировка в рамках бизнес-транзакции охватывающей несколько систе
    #39876702
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaLeonid KudryavtsevНачинает ли команда SELECT новую транзакцию
конечно, ведь уровень изоляции стартуемой транзакции определяет какие данные этот select увидит, разве нет?
"не все так очевидно" ( C ) дочь офицера

бывают разные степени изоляции транзакций. может быть разная трактовка самого термина "транзакция" у разных писателей СУБД. Тут только читать доку по __конкретной__ СУБД.

COMMIT и ROLLBACK кроме "теоретического" окончания транзакции, должен еще изменения или зафиксировать в файлах базы или откатить. Для SELECT'а ничего фиксировать и/или откатывать не нужно. Т.е. ровно такое же "время жизни транзакции", как и "время жизни оптимистической блокировки". Странное время жизни того, чего физически нет.

IMHO
...
Рейтинг: 0 / 0
Фаулер. Оптимистическая блокировка в рамках бизнес-транзакции охватывающей несколько систе
    #39876703
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,
Совершенно верно. Select не особо волнует разработчика. А вот модификация таблы в середине кода будет закоммичена и уже ее не откатить.
...
Рейтинг: 0 / 0
Фаулер. Оптимистическая блокировка в рамках бизнес-транзакции охватывающей несколько систе
    #39876735
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharpquestioner,
"Других учителей в стране нет вовочка" (с)

C такими петучителями суп не сваришь. Так - тролли, последние
...
Рейтинг: 0 / 0
Фаулер. Оптимистическая блокировка в рамках бизнес-транзакции охватывающей несколько систе
    #39876736
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC SharpLeonid KudryavtsevСУБД начинаются неявнода. И боюсь фаулер в такие тонкости не опускается.
Его задача - концепция)

вообще волнуют. Он даже их рисует на картинке
...
Рейтинг: 0 / 0
Фаулер. Оптимистическая блокировка в рамках бизнес-транзакции охватывающей несколько систе
    #39876739
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid KudryavtsevquestionerСистемная транзакция это в БД которая.
Совершенно полный бред.

Транзакция в СУБД при оптимистической блокировки начинается ровно в тот момент, когда говорят hibernate.commit()

При hibernate коммите, начинаются скидываться изменения в БД (по английски это обычно называют post), послыются update'ы которые и НАЧИНАЮТ транзакцию в СУБД и в конце в БД посылают commit который транзакцию СУБД ЗАВЕРШАЕТ. И все это происходит в рамках одного метода.

Т.ч. никакой времени жизни в рамках "в БД которая" быть не может в принципе. Т.к. при обработке данных никакой транзакции в СУБД быть и не должно. В этом и есть весь смысл большая часть смысла оптимистичной блокировке, что не нужны иметь долго открытую транзакцию с блокировками в СУБД, а все большая часть транзакции и блокировки в СУБД "короткие".

IMHO


В книге ЯВНО говорится, что бизнес-транзакция может охватывать несколько системных транзакций.
...
Рейтинг: 0 / 0
Фаулер. Оптимистическая блокировка в рамках бизнес-транзакции охватывающей несколько систе
    #39876744
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Фаулер. Оптимистическая блокировка в рамках бизнес-транзакции охватывающей несколько систе
    #39876748
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оптимистическая блокировка НИКАК со временим жизни транзакции СУБД НЕ связана.

Никто не мешает мне при оптимистик блокировке:
1. Прочитать данные в память сервера приложений
2. Тридцать три и три раза перезагрузить сервер СУБД
3. Записать данные в БД

На то она и оптимистическая. При писсиместической, такое, разумеется, уже не получится. Т.к. кто нибудь между двадцать пятым и тридцатым разом перезагрузки СУБД может поменять данные и данные станут не корректны ))) А при оптимистической - запросто.

IMHO
...
Рейтинг: 0 / 0
Фаулер. Оптимистическая блокировка в рамках бизнес-транзакции охватывающей несколько систе
    #39876749
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S.
что на картинке фаулера хорошо и видно
"Извлечь данные" и "записать" у него в разных квадратиках
...
Рейтинг: 0 / 0
Фаулер. Оптимистическая блокировка в рамках бизнес-транзакции охватывающей несколько систе
    #39876751
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
читаем исходную фразу из книжки
Оптимистическая автономная блокировка может быть применена в любое время, однако срок её действия ограничивается системной транзакцией, в процессе которой она была установлена.
смотрим на картинку из той же книжки......

Классика - По какому делу вы пришли ко мне? Говорите как можно скорее, я сейчас иду обедать.
- Мы, управление дома, - с ненавистью заговорил Швондер, - пришли к вам после общего собрания жильцов нашего дома, на котором стоял вопрос об уплотнении квартир дома...
- Кто на ком стоял? - крикнул Филипп Филиппович, - потрудитесь излагать ваши мысли яснее.
- Вопрос стоял об уплотнении.
- Довольно! Я понял!
...
Рейтинг: 0 / 0
Фаулер. Оптимистическая блокировка в рамках бизнес-транзакции охватывающей несколько систе
    #39876758
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пересказ Фаулера в изложении меня любимого



читаем исходную фразу из книжки
смотрим на картинку из той же книжки......

и понимаем, что скорее всего Фаулер имел в виду две РАЗНЫЕ блокировка

1) "Оптимистик блокировку" как метод доступа к данным. При которой на самом деле БЛОКИРОВКИ то и НЕТ.
2) И реальную блокировку в СУБД, которая, действительно живет только во время транзакции

Оптимистическая автономная блокировка может быть применена в любое время (про первую!), однако срок её действия блокировки (другой, про вторую !) ограничивается системной транзакцией, в процессе которой она была установлена.


Тогда фраза хоть и кривая, но хоть какой-то смысл появляется.

Ну а далее, как я уже объяснил ))) 21994126 , Фаулер имел в виду, что не нужно блокировать всю таблицу, а только те записи. которые менялись )))

В общем, что Коррузо в перепеве Робиновича, что Фаулер в пересказе.....

Что Фаулер, что Каутский с Троцким - место в топке.

- Все равно не позволю есть, пока не заложите. Зина, примите майонез
у Шарикова.
- Как это так "примите"? - расстроился Шариков, - я сейчас заложу.
Левой рукой он заслонил блюдо от Зины, а правой запихнул салфетку за
воротник и стал похож на клиента в парикмахерской.
- И вилкой, пожалуйста, - добавил Борменталь.
Шариков длинно вздохнул и стал ловить куски осетрины в густом соусе.
- Я еще водочки выпью? - заявил он вопросительно.
- А не будет ли вам? - осведомился Борменталь, - вы последнее время
слишком налегаете на водку.
- Вам жалко? - осведомился Шариков и глянул исподлобья.
- Глупости говорите... - вмешался суровый Филипп Филиппович, но
Борменталь его перебил.
- Не беспокойтесь, Филипп Филиппович, я сам. Вы, Шариков, чепуху
говорите и возмутительнее всего то, что говорите ее безапелляционно и
уверенно. Водки мне, конечно, не жаль, тем более, что она не моя, а
Филиппа Филипповича. Просто - это вредно. Это - раз, а второе - вы и без
водки держите себя неприлично.
Борменталь указал на заклеенный буфет.
- Зинуша, дайте мне, пожалуйста, еще рыбы, - произнес профессор.
Шариков тем временем потянулся к графинчику и, покосившись на
Борменталя, налил рюмочку.
- И другим надо предложить, - сказал Борменталь, - и так: сперва
Филиппу Филипповичу, затем мне, а в заключение себе.
Шариковский рот тронула едва заметная сатирическая улыбка, и он
разлил водку по рюмкам.
- Вот все у вас как на параде, - заговорил он, - салфетку - туда,
галстук - сюда, да "извините", да "пожалуйста-мерси", а так, чтобы
по-настоящему, - это нет. Мучаете сами себя, как при царском режиме.
- А как это "по-настоящему"? - позвольте осведомиться.
Шариков на это ничего не ответил Филиппу Филипповичу, а поднял рюмку
и произнес:
- Ну желаю, чтобы все...
- И вам также, - с некоторой иронией отозвался Борменталь.
Шариков выплеснул содержимое рюмки себе в глотку, сморщился, кусочек
хлеба поднес к носу, понюхал, а затем проглотил, причем глаза его налились
слезами.
...
Рейтинг: 0 / 0
Фаулер. Оптимистическая блокировка в рамках бизнес-транзакции охватывающей несколько систе
    #39876768
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid KudryavtsevP.S.
что на картинке фаулера хорошо и видно
"Извлечь данные" и "записать" у него в разных квадратиках

Ну дык в пунктире это системная транзакция (она ж БД шная)
...
Рейтинг: 0 / 0
Фаулер. Оптимистическая блокировка в рамках бизнес-транзакции охватывающей несколько систе
    #39876775
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevДля SELECT'а ничего фиксировать и/или откатывать не нужно. Т.е. ровно такое же "время жизни транзакции", как и "время жизни оптимистической блокировки". Странное время жизни того, чего физически нет.
IMHOНеправильное у вас ИМХО.
Выборка обязана подчиняться общим правилам просто потому, что транзакция - механизм обеспечения атомарности и целостности.
"Грязное чтение" оставим на совести тех СУБД, где оно есть.
...
Рейтинг: 0 / 0
Фаулер. Оптимистическая блокировка в рамках бизнес-транзакции охватывающей несколько систе
    #39876915
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner,
Вот ты на форуме вроде никому не отвечаешь, не помогаешь.
Пришел с вопросом и хамишь, слова матерные употребляешь.
Прогресса в обучении нет. Свой пост про DI не помним.
То что ТС спрашивает и не огрызается ты не согласен.
Может тебя плохо воспитывали? Или маньяк какой одичавший.
...
Рейтинг: 0 / 0
Фаулер. Оптимистическая блокировка в рамках бизнес-транзакции охватывающей несколько систе
    #39876920
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner,
Упс. Топик уже чистят. Не отвлекайся от темы ТС.
...
Рейтинг: 0 / 0
Фаулер. Оптимистическая блокировка в рамках бизнес-транзакции охватывающей несколько систе
    #39876957
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp, попался
...
Рейтинг: 0 / 0
Фаулер. Оптимистическая блокировка в рамках бизнес-транзакции охватывающей несколько систе
    #39876962
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonPetroNotC Sharp, попался
хоть и не знаю за что но готов выслать вискарь в твою коллекцию)
...
Рейтинг: 0 / 0
Фаулер. Оптимистическая блокировка в рамках бизнес-транзакции охватывающей несколько систе
    #39876975
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пока не стоит. Я на таблЭтках.
...
Рейтинг: 0 / 0
Фаулер. Оптимистическая блокировка в рамках бизнес-транзакции охватывающей несколько систе
    #39877044
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
продолжаю обсуждение в стиле "сколько ангелов может уместиться на острие иглы"
в общем-то - это глубоко пофиг, чисто ради флуда
Basil A. SidorovLeonid KudryavtsevДля SELECT'а ничего фиксировать и/или откатывать не нужно. Т.е. ровно такое же "время жизни транзакции", как и "время жизни оптимистической блокировки". Странное время жизни того, чего физически нет.
IMHOНеправильное у вас ИМХО.
Выборка обязана подчиняться общим правилам просто потому, что транзакция - механизм обеспечения атомарности и целостности.
"Грязное чтение" оставим на совести тех СУБД, где оно есть.

"не все так очевидно"
Это только у Фаулера и других теоретиков, транзакция атомарна и целостна. А даже в википедии:
1. не всегда консистентна, т.к. есть разные режимы изоляции
2. не всегда атомарна, т.к. есть сейв-поинты, автономные (вложенные) транзакции, статемент-консистент и перезапуск стайтментов, чекпоинты и прочее

в общем, в реальной жизни ничего автомарного и консистентного и нет

"-а что же есть?
-а ничего и нет, все только видимость" ( C ) сказка о говнокуре и Будде
...
Рейтинг: 0 / 0
Фаулер. Оптимистическая блокировка в рамках бизнес-транзакции охватывающей несколько систе
    #39877045
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Продолжая бредить дальше, то про SELECT можно выдвинуть три утверждения. (больше придумать не смог)
1. SELECT - ТОЧНО начинает транзакцию
2. SELECT - точно НЕ начинает транзакцию
3. SELECT - НЕ точно начинает транзакцию

Мое первоначальное высказывание:
Leonid KudryavtsevНачинает ли команда SELECT новую транзакцию, точно не уверен.
...
Рейтинг: 0 / 0
Фаулер. Оптимистическая блокировка в рамках бизнес-транзакции охватывающей несколько систе
    #39877053
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делаем маленький тест на Oracle 11g и видим.... что select совершенно НЕ точно начинает новую транзакцию. Есть ли транзакция, нет ли транзакции - то нам совершенно НЕ точно и совершенно НЕ ведомо


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
create or replace package aa_TEST is

procedure init;
  
procedure sel_upd_commit;
  
procedure sel_upd;
    
procedure sel_only;

procedure sel_for_update;

end aa_TEST;
/

create or replace package body aa_TEST is

procedure init is
  begin
    execute immediate 'create table aa_tbl ( id number );';
    execute immediate 'insert into aa_tbl values (0);';
    commit;
  end;
  
procedure sel_upd_commit is
PRAGMA AUTONOMOUS_TRANSACTION; 
    x_rowid rowid;
  begin
    select rowid into x_rowid from aa_tbl where id=0;
    update aa_tbl set id=100500 where id = 500100;
    commit;
  end;
  
procedure sel_upd is
PRAGMA AUTONOMOUS_TRANSACTION; 
    x_rowid rowid;
  begin
    select rowid into x_rowid from aa_tbl where id=0;
    update aa_tbl set id=100500 where id = 500100;
    -- commit;
  end;
    
procedure sel_only is
PRAGMA AUTONOMOUS_TRANSACTION; 
    x_rowid rowid;
  begin
    select rowid into x_rowid from aa_tbl where id=0;
    -- update aa_tbl set id=100500 where id = 500100;
    -- commit;
  end;

procedure sel_for_update is
PRAGMA AUTONOMOUS_TRANSACTION; 
    x_rowid rowid;
  begin
    select rowid into x_rowid from aa_tbl where id=0 for update;
    -- update aa_tbl set id=100500 where id = 500100;
    -- commit;
  end;

end aa_TEST;
/





Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
-- Транзакция ТОЧНО началась
-- Транзакция ТОЧНО закончилась
-- ошибки нет
begin
  aa_test.sel_upd_commit;
end;
/
-- Транзакция ТОЧНО началась
-- Транзакция НЕ закончилась
-- ошибка ЕСТЬ
begin
  aa_test.sel_upd;
end;
/
-- Транзакция ????? началась  (не точно?)
-- Транзакция НЕ закончилась
-- ошибки нет
-- А был ли мальчик? А было ли "начало транзакции"?
begin
  aa_test.sel_only;
end;
/

-- Транзакция ТОЧНО началась
-- Транзакция НЕ закончилась
-- ошибки ЕСТЬ
begin
  aa_test.sel_for_update;
end;
/



Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
PL/SQL procedure successfully completed
 
begin
  aa_test.sel_upd;
end;
 
ORA-06519: active autonomous transaction detected and rolled back
ORA-06512: at "MSM.AA_TEST", line 26
ORA-06512: at line 3
 
PL/SQL procedure successfully completed
 
begin
  aa_test.sel_for_update;
end;
 
ORA-06519: active autonomous transaction detected and rolled back
ORA-06512: at "MSM.AA_TEST", line 44
ORA-06512: at line 3
...
Рейтинг: 0 / 0
Фаулер. Оптимистическая блокировка в рамках бизнес-транзакции охватывающей несколько систе
    #39877078
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevДелаем маленький тест на Oracle 11g и видим.... что select совершенно НЕ точно начинает новую транзакцию.Раздел 10 Transactions "Концепт-гада" не очень с вами согласен:
выделено мноюBeginning of a Transaction
A transaction begins when the first executable SQL statement is encountered . An executable SQL statement is a SQL statement that generates calls to a database instance, including DML and DDL statements and the SET TRANSACTION statement.
Или хотите предоставить классификацию, в которой оператор select не принадлежит к D(ata)M(anipulation)L(anguage)?
...
Рейтинг: 0 / 0
Фаулер. Оптимистическая блокировка в рамках бизнес-транзакции охватывающей несколько систе
    #39877092
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа. Вы зря спорите.
Фаулер не рассматривает транзакцию в базе на уровне оператора select.
Он рассматривает уровень Единица работы с базой (квадратик).
Что физически происходит в субд его не волнует.
...
Рейтинг: 0 / 0
25 сообщений из 156, страница 3 из 7
Форумы / Java [игнор отключен] [закрыт для гостей] / Фаулер. Оптимистическая блокировка в рамках бизнес-транзакции охватывающей несколько систе
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]