|
|
|
Проблема с dead/lock после Rollback
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovТем, что вызывает меньше deadlock, которые ты так жаждешь получать. В смысле - меньше? Как deadlock может быть больше или меньше? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2014, 17:25:42 |
|
||
|
Проблема с dead/lock после Rollback
|
|||
|---|---|---|---|
|
#18+
А, я понял. Имеется в виду - реже :), т.к. при чтении (без FOR UPDATE WITH LOCK) не бывает deadlock-ов при rec_version. Но у меня-то чтений и нет. Так чем же в моём случае rec_version хуже no_rec_version? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2014, 17:38:02 |
|
||
|
Проблема с dead/lock после Rollback
|
|||
|---|---|---|---|
|
#18+
YuRockВ смысле - меньше? Как deadlock может быть больше или меньше? no_rec_version порождает deadlock и в ситуациях, где rec_version этого не делает. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2014, 17:38:42 |
|
||
|
Проблема с dead/lock после Rollback
|
|||
|---|---|---|---|
|
#18+
YuRockНо у меня-то чтений и нет это ты так думаешь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2014, 17:41:39 |
|
||
|
Проблема с dead/lock после Rollback
|
|||
|---|---|---|---|
|
#18+
dimitrэто ты так думаешь Спасибо, что уделили внимание моей теме. Я так понял, это намёк на то, что перед update выполняется много чтений в любом случае, используя текущую транзакцию. В любом случае, всем спасибо. Переделал на SELECT FOR UPDATE WITH LOCK, + изменил rec_version на no_rec_version. Отдал на тестирование/обновление. Если в ближайшие несколько месяцев проблема не повторится, значит - помогло. Если повторится - приду сюда снова и доказательства принесу - полные логи с TIBSQLMonitor :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2014, 17:52:00 |
|
||
|
Проблема с dead/lock после Rollback
|
|||
|---|---|---|---|
|
#18+
YuRock, это намек на то, что update сначала читает, а потом уже пишет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2014, 18:48:05 |
|
||
|
Проблема с dead/lock после Rollback
|
|||
|---|---|---|---|
|
#18+
YuRockПеределал на SELECT FOR UPDATE WITH LOCK, + изменил rec_version на no_rec_version. Стекло протереть забыл, шаман хренов. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2014, 19:01:18 |
|
||
|
Проблема с dead/lock после Rollback
|
|||
|---|---|---|---|
|
#18+
dimitrэто намек на то, что update сначала читает, а потом уже пишет Да, я приблизительно это и имел ввиду под "перед update выполняется много чтений в любом случае". Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2014, 20:05:31 |
|
||
|
Проблема с dead/lock после Rollback
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovСтекло протереть забыл, шаман хренов. Не забыл - еще rollback на commit поменял. Давайте не переходить на личности - я не любитель. Если я раздражаю вопросами, ответы на которые можно получить перечитав статьи kdv - извините, такой я человек, я не могу осмыслить и запомнить сразу много информации, не попробовав всё сам на примерах и не прочувствовав, как это работает. И не понаступав на грабли, на что времени нет. Остаётся в памяти только то, с чем сталкивался и чем пользуюсь. Что касается логирования транзакций - та же проблем со временем. И отсутствие целесообразности применительно к данному примеру (транзакция может не откатиться только в случае, если программа зависла, чего не бывает никогда). Но на будущее, конечно, сделаю. Хотя TIBSQLMonitor и не даёт параметров транзакции, всё равно будет полезно. Так что меня тоже можно понять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2014, 20:24:32 |
|
||
|
Проблема с dead/lock после Rollback
|
|||
|---|---|---|---|
|
#18+
YuRockЕсли я раздражаю вопросами, ответы на которые можно получить перечитав статьи kdv - извините Ты раздражаешь изменением случайных кусков кода в случайном направлении без анализа причин проблемы. Это не поддаётся извинению. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2014, 20:31:36 |
|
||
|
Проблема с dead/lock после Rollback
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovбез анализа причин проблемы Как без анализа? Я в самом начале написал, что причина может быть только в некорректной (не совсем корректной) работе с базой. Т.к. причины в логике программы быть не может, т.к. тогда зависала бы программа, чего не бывает. Вот поэтому я и изменил работу с базой. Что я сделал нелогично? Я не вижу других причин, кроме двух - в логике и в базе. Надо что-то делать. Выхода из ситуации вижу три: 1. Если причина в логике - изменить логике (что я не сделал, т.к. тут ошибок нет); 2. Если причина в базе - изменить работу с базой; 3. Сменить профессию - с одной стороны - уже поздно, с другой - пока рано. Вот такой анализ. Бред? Если по Вашему - да - прошу не отвечать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2014, 19:38:57 |
|
||
|
Проблема с dead/lock после Rollback
|
|||
|---|---|---|---|
|
#18+
YuRockТ.к. причины в логике программы быть не может, т.к. тогда зависала бы программа сильная гипотеза... а у неё доказательства есть ? Код: sql 1. 2. Вот тебе программа, складывающая два числа. Она не зависает. А проблeма в логике есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2014, 19:43:05 |
|
||
|
Проблема с dead/lock после Rollback
|
|||
|---|---|---|---|
|
#18+
YuRockЧто я сделал нелогично? Ты не стал копать вглубь и выяснять какая последовательность действий приводит к проблеме. Или хотя бы выяснить где именно возникает проблема. Ты просто увидел сообщение об ошибке deadlock и решил, что оно возникает там, где ты ожидаешь получение deadlock. Извини, не все баги настолько глупы, чтобы сидеть там, где ты их ожидаешь. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2014, 19:49:13 |
|
||
|
Проблема с dead/lock после Rollback
|
|||
|---|---|---|---|
|
#18+
YuRockДа нет, этот алгоритм работает. Только до поры - до времени. Т.е. твоя логика программирования - всё везде работает, пока не доказана ошибка. Это испорченная логика, она привела к тебя к проблеме, а ты даже примерно не можешь угадать где она кроется. Нормальная логика "не работает ничего и нигде, пока недоказано что ошибок нет" То что ты написал - это примерно как "Я перехожу дорогу не глядя по сторонам. Были статьи, где писали всякую чушь, что надо искать специальной место, какие-то специальные лампочки - но там слишком много написано, это мне не помогает, не могу запомнить. Ну и не надо, я просто подхожу к дороге и сразу её перехожу. Все работает, алгоритм правильный. Только до поры - до времени." Вот у тебя "до поры до времени" и случилось. И по большому счёту у тебя теперь два пути. Один подход паскалевский: "сомневайся во всем." От самых корней и выше доказывай, что твоя программа правильная. Где не сможешь доказать - там и ошибка, или одна из. Откуда начинать теюе уже сказали - найди транзакцию, которая запись держит. Возникает дедлок - прочитай ВСЕ транзакции и сохрани их в файл и чтобы тебе этот файл присылали после таких проблем. Это ещё противнее, чем читать статьи, но в среднем это быстрее. Другой подход: "Часы я потерял в деревне, но искать буду в городе, тут светлее". Если повезет - найдешь что-чьи-нибудь часы быстро и не напрягая мозги. И на неделю проблема спрячется. А потом вылезет в другом месте. А потом в третьем. И т.д. Но ты можешь оказаться везунчиком и решить проблему с первой попытки. В первом случае тебе могут помочь хотя бы советами. Во втором - только пожелать удачи. Выбирать тебе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2014, 20:00:34 |
|
||
|
Проблема с dead/lock после Rollback
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovувидел сообщение об ошибке deadlock и решил, что оно возникает там, где ты ожидаешь получение deadlock ну естественно, т.к. больше нигде нет обращений к этой записи. Только при запуске чтение кое-каких данных из неё (та транзакция тоже закрывается, естественно), а потом был только этот update. Итак, где именно я выяснил (не придумал, правда). Последовательность действий - пользователь пытается сделать некую операцию, чем запускает код, написанный в первом посте. Т.к. для этого ничего другого нельзя сделать. Естественно, я это всё знал перед тем, как зайти на этот форум. К чему эти выражения - "копать вглубь" и т.д.? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2014, 20:09:18 |
|
||
|
Проблема с dead/lock после Rollback
|
|||
|---|---|---|---|
|
#18+
YuRockт.к. больше нигде нет обращений к этой записи т.е. по вашему запускается только один единственный экземпляр программы на одном единственном компьютере, а счама эта функция не может быть вызвана дважды ни через рекурсию (TDataSet.Onxxx, Application.ProcessMessages и прочие фишки) ни через многопоточность ? YuRockта транзакция тоже закрывается, естественно И в этом вы тоже уверены. И еще уверены, что закрывается сразу, а не через час. Если вы действительно это все доказали, то случилось, что-то удивительно и редкое. Так бывает. Но чаще бывает, что уверенность программиста, все эти "естественно" - оказалось ошибочной. YuRockЕстественно, я это всё знал В таком случае вы можете это доказать и другим и себе, например просмотрев список транзакций во время ошибки. И дальше шаг ща шагом искать место, где "естественно" не сыграло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2014, 20:16:24 |
|
||
|
Проблема с dead/lock после Rollback
|
|||
|---|---|---|---|
|
#18+
Ariochнайди транзакцию, которая запись держит... В первом случае тебе могут помочь хотя бы советами. Во втором - только пожелать удачи. Выбирать тебе. Эта транзакция может быть только одна - больше в проекте нет обращений к этой записи. И эта транзакция может не завершиться только в случае, если действие, выполняемое между update и rollback зависнет, но тогда и программа зависнет (т.к. это основной поток), чего не бывает. Впрочем, я всё это уже не раз писАл, но ты, я так понял, мало читаешь - больше пишешь. Тебе наверно можно посоветовать больше читать, меньше писать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2014, 20:23:45 |
|
||
|
Проблема с dead/lock после Rollback
|
|||
|---|---|---|---|
|
#18+
Ariochт.е. по вашему запускается только один единственный экземпляр программы на одном единственном компьютере, а счама эта функция не может быть вызвана дважды ни через рекурсию (TDataSet.Onxxx, Application.ProcessMessages и прочие фишки) ни через многопоточность ? нет, это всё не по-моему. Дальше, я так понял, всё отчасти строится на этом утверждении (неверном), т.ч. на остальное отвечать уже не буду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2014, 20:28:45 |
|
||
|
Проблема с dead/lock после Rollback
|
|||
|---|---|---|---|
|
#18+
YuRock, Если ты из того же Донецка, что и я - можешь подойти, я на пальцах/примерах покажу ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2014, 20:31:37 |
|
||
|
Проблема с dead/lock после Rollback
|
|||
|---|---|---|---|
|
#18+
YuRockЭта транзакция может быть только одна YuRockнет, это всё не по-моему. Ты сам себе противоречишь. Впрочем, удачи тебе в попытках наугад припрятать ошибку ещё сильнее. Раньше или позже это получится и случаться она будет, например, раз в месяц. И всем будет хорошо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2014, 20:33:23 |
|
||
|
Проблема с dead/lock после Rollback
|
|||
|---|---|---|---|
|
#18+
DarkMaster, Спасибо, но боюсь меня в твой офис не пустят ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2014, 20:35:00 |
|
||
|
Проблема с dead/lock после Rollback
|
|||
|---|---|---|---|
|
#18+
Arioch, Когда я говорил, что она может быть одна, конечно, имел ввиду, что она может быть только "эта" - с именем объекта trLock. Если и это непонятно - действительно, о чем дальше говорить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2014, 20:39:22 |
|
||
|
Проблема с dead/lock после Rollback
|
|||
|---|---|---|---|
|
#18+
YuRockЭта транзакция может быть только одна - больше в проекте нет обращений к этой записи. В сообщении об ошибке не указывается на какой записи она возникла. Почему ты уверен, что она возникает именно при обращении к этой записи? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2014, 20:43:45 |
|
||
|
Проблема с dead/lock после Rollback
|
|||
|---|---|---|---|
|
#18+
YuRockс именем объекта trLock. Это выражение не имеет смысла. Но поскольку ты тут самый умный, то едва ли мы можем тебя чему-то учить. Возможно, тебе действителньо стоит побиться лбом об стену пару недель, прежде чем ты признаешь, что программа работает не так, как ты себе придумал. А может быть тебе повезёт случайно спрятать ошибку и не менять своей самоувренности. Я тебе написал несколько причин, почему может быть несколько транзакций, дёргающих эту запись, и это еще не все причины, а только самые очевидные. Тебе ещё раньше написали, как это проверить. Но проверять ты не хочешь, тебе кажется, что твоё воображение, как работает программа, полностью соответствует реальности. Не вопрос, имееш ьправо искать ошибку так, как проще, а не так, как эффективнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2014, 20:51:47 |
|
||
|
Проблема с dead/lock после Rollback
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovВ сообщении об ошибке не указывается на какой записи она возникла. Почему ты уверен, что она возникает именно при обращении к этой записи? Блин, ну потому, что она возникает, только когда пользователь, грубо говоря, нажимает на кнопку, по которой выполняется код, который я привёл в 1-м посте! Иначе зачем бы я его приводил - просто пофилософствовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2014, 21:38:48 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=38560185&tid=1563887]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
163ms |
get topic data: |
8ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 191ms |
| total: | 448ms |

| 0 / 0 |
