|
|
su.dbms- SU.DBMS ---------------------------------------------------------------------- From : Tolik Tentser 2:5020/400 31 May 2001 19:29:13 To : All Subject : Re: Informix ? -------------------------------------------------------------------------------- Hi, Fedor 'Cruger' Tersin! В чреве акулы, пойманной Thu, 31 May 2001 12:01:59 +0000 (UTC), дети капитана Гранта нашли письмо на тему 'Re: Informix ?': > >> возникает дэтлок. Что в таком случае может сделать объект, занимающийся > >> взаимодействием с сервером? > TT> Повторит транзакцию, в которой был UPDATE >А имеет ли смысл? Ведь изменение записи шло при определенных условиях. Раз >транзакция откатилась, все условия придется проверять. Какие условия ? Фраза WHERE в UPDATE ? Да, придется, её и повторим. > >> можно ли его повторить, > TT> Можно. А почему нельзя ? >Как ты будешь повторять транзакцию целиком, а не один единственный запрос из >нее? Hу и это, кстати, не проблема, но я принципиально в транзакцию заворачиваю то, что можно отправить одним батчем. И при надобности - его повторяю > TT> Данные были успешно прочитаны в предыдущей транзакции, если бы там был > TT> deadlock - оно бы отработалось там >Эти данные могли изменить. Детлок как раз поэтому мог возникнуть. Что, >накатывать сверху свои изменения, которые сотрут уже внедренные? Сие есть просто еще одна возможная ошибка, при необходимости легко проверяемая при помощи фразы WHERE в UPDATE. Рассматривай повтор после deadlock как будто первого повтора не было совсем, а для второго - пользовательнажал OK на полсекунды позже. > >> А может быть какой то алгоритм работал без транзакции... > TT> Как ты себе представляшь запрос "без транзакции" ? >Hе запрос, а алгоритм. Т.е. несколько последовательных, логически связанных >запросов. Hо не в транзакционных скобках. Если это транзакция - пошлю одним батчем. > TT> А зря. Я вот написал - и нет никаких проблем с deadlock`ами. Примерно > TT> раз-два в час они случаются, но все отрабатывается автоматом и никого не > TT> напрягает. Hикуда за пределы базового класса запроса они не выходят. >1. Есть ли у тебя полноценные транзакции, т.е. группа связанных запросов с >клиента в транзакционных скобках? Сколько хочешь. >Что ты делаешь в этом случае? См. выше, посылаю один батч >2. Что ты делаешь, если детлок случился из-за изменения тех же данных кем то >другим? А какая разница ? При втором повторе, если это существенно - я точно так же обнаружу эти изменения. deadlock тут ничего не меняет, представь себе, что оные изменения случились и не вызвали deadlock`а ? Bye ... Тенцер А.Л. tolik@katren.nsk.ru ICQ 15925834 --- ifmail v.2.15dev5 * Origin: AO Katren (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /su.dbms/208076da11c9.html, оценка из 5, голосов 10
|