Показать сообщение отдельно
Старый 22.12.2010, 21:36   #19  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,443 / 1781 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
дополнительное соединение здесь никак не поможет. Поскольку в этом дополнительном соединении запрос также пойдет с хинатми грязного чтения
Дополнительное соединение призвано изменить поведение не второго клиента (для него действительно принципиально ничего не измениться), а первого! Суть в том что если первый клиент не будет откладывать вставку нового значения в InventDim до завершения своей транзакции (используя дополнительное соединение это возможно, верно?), то к моменту когда второй клиент будет искать заданную комбинацию - он её найдёт(!). При этом основная транзакция первого клиента может быть ещё не завершена. Ещё раз, дополнительное соединение используется для выноса действий по вставке значения из основной транзакции (длинной) в отдельную (короткую).

Цель - получить следующую последовательность действий:
1. Первый пользователь открыл основную транзакцию
2. ...Первый пользователь открыл фоновую транзакцию в отдельном соединении
3. ...Первый пользователь в отдельном соединении выполнил findOrCreate
4. ...Первый пользователь подтвердил фоновую транзакцию (новая комбинация складских аналитик окончательно запостилась в таблицу)
5. Второй пользователь открыл свою транзакцию
6. Второй пользователь выполнил InventDim::find() - нашёл запись!
7. Второй пользователь подтвердил свою транзакцию
8. Первый пользователь подтвердил свою основную транзакцию

Последний раз редактировалось S.Kuskov; 22.12.2010 в 22:05.