|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
GJТак и не понял, почему нужно обязательно выбирать сложный способ решения задачи вместо того, чтобы просмотреть десяток ХП, выполнявшихся в блокирующей транзакции. Да вот я тоже не понимаю, почему ты собираешься просматривать тысячи ХП вместо тех, которые реально выполняются. GJИ что я тогда буду искать? Одновременную работу нескольких транзакций что ли? Да, именно это я и сказал. Кажется, даже два раза. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2021, 19:38 |
|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
GJ YuRock При сохранении кассового чека UPDATE-ы запрещены. Вот этого я не понял. Это вопрос или утверждение? Почему UPDATE-ы запрещены? Как изменять значения полей записи? Потому, что они порождают блокировки и безвозвратные потери первички. Никак не изменять. Делать только инсерты. Изменять можно потом, джобом или монопольно при пересменке. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2021, 21:12 |
|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
GJ А почему тогда логирование UPDATE на триггер не повесить? GJ Обосновать разработку такого обновления я не смогу. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2021, 21:17 |
|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Да вот я тоже не понимаю, почему ты собираешься просматривать тысячи ХП вместо тех, которые реально выполняются. Я то как раз и хочу просмотреть только тот десяток ХП, которые выполняюстя в блокирующей транзакции. А мне дают советы как увеличить это количество. GJИ что я тогда буду искать? Одновременную работу нескольких транзакций что ли? Да, именно это я и сказал. Кажется, даже два раза. [/quot] Сделал у себя на локальной БД, как ты сказал, прошел, одновременно работающих транз0акций не обнаружено. Дальше что? И не получится как в том анекдоте... "Жаль, что все куры сдохли, а то у меня еще столько идей" YuRock Почему UPDATE-ы запрещены? Как изменять значения полей записи? Потому, что они порождают блокировки и безвозвратные потери первички. Никак не изменять. Делать только инсерты. Изменять можно потом, джобом или монопольно при пересменке.[/quot] За четверть века работы с базами данных впервые встречаю утверждение о недопустимости применения запроса UPDATE при работе в многопользовательском режиме :) Нет, если вы рассматриваете вариант когда в некоей абстрактной БД сотня обезьян одновременно занимается изменением данных посредством низкоуровневых запросов, то, скорее всего, вы правы. Но я работаю с вполне конкретной системой, при проектировании которой изначально учитывалась одновременная работа многих пользователей. И нигде больше одновременно со мной никто в этой записи значения полей не меняет. Так что глупо как-то выбрасывать существующую систему и делать новую, по вашей идеологии, когда речь идет всего лишь о поиске ошибки. YuRock GJ Обосновать разработку такого обновления я не смогу. Вы, похоже, совсем не читаете, что я пишу. Допустим, сделал я такой супер-мега-скрипт, который меняет кучу метаданных в БД. И что? Могу положить его на полочку и любоваться, потому что воспользоваться им не смогу. Ваш совет хорош в случае, если я -- хозяин БД. Тогда, да. Запустил IBExpert, быстренько поправил несколько сотен ХП, дописал еще несколько сотен новых... и жди, когда яблочко свалится тебе в руки. А так... я разработку уже закончил. Философские споры -- штука бесконечная. Как только я понял, что ничего содержательного больше не будет, то сразу вставил в приложение дополнительное логирование. Теперь буду ждать, когда ошибка возникнет снова, а потм смотреть ХП, попавшие в логи, и искать место ошибки. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2021, 15:08 |
|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
GJ если вы рассматриваете вариант когда в некоей абстрактной БД сотня обезьян одновременно занимается изменением данных посредством низкоуровневых запросов, то, скорее всего, вы правы. И вообще, что там при чеке обновлять? Сумму денег в кассе? Остаток товара? Что еще? Всё, что приходит в голову - может быть изменено вторым кассиром параллельно, ту же запись. Потому так делать и нельзя. GJ А так... я разработку уже закончил. А, ну отлично. Хорошо, что проблем нет. А на форум просто зашли, чтоб потроллить людей от скуки. Правильно! ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2021, 15:21 |
|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
GJСделал у себя на локальной БД, как ты сказал, прошел, одновременно работающих транз0акций не обнаружено. Дальше что? Значит надо проверять какой из высказанных выше постулатов ложен: 1) Конкурирующая транзакция находится в твоём приложении. 22397414 2) Твоё приложение всегда запущено в одном экземпляре. 22397656 Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2021, 15:25 |
|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
YuRock Я рассматриваю всего лишь реальную жизнь. В которой и репликатор может любую запись изменить в любой момент, пришедшую с центральной базы <...> Не может репликатор изменить. Правки в документ могут вноситься только на одной БД. Если нужно править на другой БД, требуется передача прав. Более того, даже на одной БД если кто-то редактирует документ, остальн6ые могут только читать, но не править. Если, конечно, триггеры не отключать :) Система изначально спроектирована так, чтобы можно было без опаски пользоваться изменением таблиц, а не загонять все изменения в некий черновик, из которого потом по ночам в монопольном режиме выполнять синхронизацию данных. YuRock И вообще, что там при чеке обновлять? Сумму денег в кассе? Остаток товара? Что еще? Всё, что приходит в голову - может быть изменено вторым кассиром параллельно, ту же запись. Изменяется сумма чека при добавлении товара, изменении количества товара по строке, при изменении цены товара (например, при использовании дисконтной карты). Меняется сумма оплат по чеку (например, частичная оплата банковской картой или бонусами), меняется состояние документа, меняются различные признаки. Так проблемный апдейт фиксирует тот фат, что чек был фискализирован. Если фискальный регистратор вдруг забарахлит, когда чек уже проведен. то мы потом увидим, что отметки о фискализации нет, и попробуем его фискализировать еще раз. YuRock А, ну отлично. Хорошо, что проблем нет. А на форум просто зашли, чтоб потроллить людей от скуки. Правильно! Проблема есть, но я сделал очередной шаг по выявлению ее причин. Получу дополнительную информацию, буду дальше думать. На форум я зашел за консультацией и советом. Как только беседа пошла по кругу, я принял для себя решение и внес соответствующие изменения. А про потроллить... тут опять как в анекдоте "Ну вы же первый начали" Продолжаю беседу, потому что вежливый. Мне пишут, я отвечаю. Можем договориться и прекратить беседу. Dimitry Sibiryakov GJСделал у себя на локальной БД, как ты сказал, прошел, одновременно работающих транз0акций не обнаружено. Дальше что? Значит надо проверять какой из высказанных выше постулатов ложен: 1) Конкурирующая транзакция находится в твоём приложении. 22397414 2) Твоё приложение всегда запущено в одном экземпляре. 22397656 Оба постулата истинны. А причина в том, что я не могу у себя на локально БД гарантировать прохождение в коде по тому же пути с теми же данными. Говорю же, что проблема возникает только у одного заказчика и очень редко. Если бы я мог у себя воспроизвести эту проблему, я бы ее уже устранил. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2021, 19:13 |
|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
GJИзменяется сумма чека при добавлении товара, изменении количества товара по строке, при изменении цены товара (например, при использовании дисконтной карты). Пока это проделывается только в одном документе только одной транзакцией - сабжевой ошибки быть не может. GJГоворю же, что проблема возникает только у одного заказчика и очень редко. Если бы я мог у себя воспроизвести эту проблему, я бы ее уже устранил. Значит таки придётся пройти всё дерево триггеров, активируемых проблемным запросом, для выявления "какая же таблица может быть изменена за пределами своего документа". PS: И анализ надо проводить именно на метаданных данного клиента, ибо там могут быть незаявленные изменения. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2021, 19:18 |
|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov GJИзменяется сумма чека при добавлении товара, изменении количества товара по строке, при изменении цены товара (например, при использовании дисконтной карты). Пока это проделывается только в одном документе только одной транзакцией - сабжевой ошибки быть не может. Из чего следует, что транзакций, как минимум, две. То есть где-то в коде приложения есть ляп, который позволяет при определенных условиях обойти завершение одной транзакции до старта новой. Dimitry Sibiryakov GJГоворю же, что проблема возникает только у одного заказчика и очень редко. Если бы я мог у себя воспроизвести эту проблему, я бы ее уже устранил. Значит таки придётся пройти всё дерево триггеров, активируемых проблемным запросом, для выявления "какая же таблица может быть изменена за пределами своего документа". PS: И анализ надо проводить именно на метаданных данного клиента, ибо там могут быть незаявленные изменения. Пока буду исходить из предположения, что в рамках блокирующей транзакции вносятся изменения ту же самую таблицу, которую пытается изменить запрос UPDATE. Для этого хочу получить список всех запросов, которые выполнялись в блокирующей транзакции. Если там есть такие, то буду искать, откуда они вызываются, и как могло получится, что транзакция оказалась незавершенной. Если нет, тогда уже перейдем к триггерам. Слишком уж там сложно все, потону в анализе. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2021, 19:32 |
|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
GJИз чего следует, что транзакций, как минимум, две. То есть где-то в коде приложения есть ляп, который позволяет при определенных условиях обойти завершение одной транзакции до старта новой. Это ты уже проверил трассировкой. Транзакция одна. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2021, 19:35 |
|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov GJИз чего следует, что транзакций, как минимум, две. То есть где-то в коде приложения есть ляп, который позволяет при определенных условиях обойти завершение одной транзакции до старта новой. Это ты уже проверил трассировкой. Транзакция одна. Я проверил на локальной базе. Одна. А у заказчика получается две. Иногда. При каких условиях, хз. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2021, 19:39 |
|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
GJ Изменяется сумма чека при добавлении товара, изменении количества товара по строке, при изменении цены товара (например, при использовании дисконтной карты). Меняется сумма оплат по чеку (например, частичная оплата банковской картой или бонусами), меняется состояние документа, меняются различные признаки. А после этого - при сохранении - лишь перенос из одной таблицы в другую, и только INSERTы. GJ Продолжаю беседу, потому что вежливый. Мне пишут, я отвечаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2021, 20:44 |
|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
GJ Пока буду исходить из предположения, что в рамках блокирующей транзакции вносятся изменения ту же самую таблицу, которую пытается изменить запрос UPDATE. В рамках одной транзакции можно обновлять одну и ту же запись хоть 500 раз. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2021, 20:47 |
|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
GJ Dimitry Sibiryakov Оба постулата истинны. А причина в том, что я не могу у себя на локально БД гарантировать прохождение в коде по тому же пути с теми же данными. Говорю же, что проблема возникает только у одного заказчика и очень редко. Если бы я мог у себя воспроизвести эту проблему, я бы ее уже устранил. Я малость подзапутался в сбитых тэгах квотирования, так что прошу пардону если не того цитирую. Но вот это наводит на грустные размышления. GJ Говорю же, что проблема возникает только у одного заказчика и очень редко. а размышления такие: а) Предположение 1 таки ложно. И у этого заказчика есть программист, разработавший скрипт или приложение по оптимизации налогов, который изредка запускается по недосмотру в рабочее время. б) Предположение 1 таки ложно. И некто хитрожопый, или группа таковых лиц по предварительному сговору, напоив до беспамятства админа или включив его в группу, получила доступ к базе помимо штатных приложений и уменьшает сумму в документе после выдачи клиенту бумажки, укладывая разницу в свои поганые карманцы. Обычно задним числом, но иногда торопятся. Кроме шуток, в моей практике такой случай был. Были изловлены и преданы сожжению на рыночной площади путём логирования изменений с меткой юзер-таймштамп. в) Предположение 1 таки справедливо, но у этих кренделей есть и код Вашего приложения. И косяк в их заплатке. Но это скорее из области фантастики. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2021, 21:35 |
|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
Старый плюшевый мишка, а может и локально шпиён подключился в ибэксперте к базе, и правит там всякое! p.s. лет 15 назад в системе на ПочтеРоссии искали барабашку, которая постоянно держит коннект к БД и активную транзакцию, причем даже рестор её не смущает - мгновенно коннектится. Ну, мы тогда были не такие ушлые, поэтому только сообщили о безобразии, а негодяя нашел кто-то на месте. Оказалось какое-то левое приложение, которое что-то там выцепляло из базы. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2021, 23:14 |
|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
GJ 1. В приложении есть три TTransactionDesc, но TSQLConnection.InTransaction есть ли вообще активная транзакция. Можно ли узнать, какая именно транзакция стартовала? Можно ли узнать, что активны одновременно более одной транзакции? Если есть возможность как-то увязать их с TRANSACTION_ID в Firebird, то вообще замечательно. 2. Создается экземпляр TSQLQuery, в него загоняется запрос, выполняется и уничтожается. И все это без явного старта транзакции. Если имеется активная транзакция, то запрос выполнится в ней. А если активной транзакции нет, тогда как? Автоматически стартует новая транзакция? А когда она завершится? А если активных транзакций несколько, то в какой выполнится этот запрос? В транзакции с максимальным ID? Ну, я не специалист в dbexpress... Беглое изучение документации (help Delphi 2007) говорит, что после явного старта транзакции все последующие запросы (TSQLQuery) будут выполняться именно в контексте этой транзакции. Переключение TSQLQuery в контекст другой транзакции выполняется свойством TransactionLevel компонента (см. описание структуры TTransactionDesc, "идентификатор транзакции"). Если TransactionLevel =0, то используется контекст последней запущенной транзакции. Да, если "активной" транзакции нет, она создается. Таки образом, поймать дедлок при такой схеме - проще некуда: ты явно стартовал транзакцию, в ее контексте сделал изменения, стартовал другую (не завершив первую транзакцию) и снова поменял ту же запись... ... Свойство TSQLConnection.InTransaction показывает, активна ли хоть одна транзакция. Способа определить, какая явная транзакция является "последней" в TSQLConnection - нет (я не нашел), поэтому можно тупо запоминать. "Увязать" транзакцию с TRANSACTION_ID firebird никак нельзя. В D2007 нет исходников "драйвера". ... Беглое знакомство с dbexpress создало впечатление, что они заточены на работу с серверами, у которых либо нет явного управления транзакциями, или одна транзакция на коннект. ... Ты умрёшь, разгребая эту конюшню. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2021, 04:54 |
|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
ъъъъъБеглое знакомство с dbexpress создало впечатление, что они заточены на работу с серверами, у которых либо нет явного управления транзакциями, или одна транзакция на коннект. Это MS SQL. Только у него существуют вложенные транзакции. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2021, 13:16 |
|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
YuRock GJ Изменяется сумма чека при добавлении товара, изменении количества товара по строке, при изменении цены товара (например, при использовании дисконтной карты). Меняется сумма оплат по чеку (например, частичная оплата банковской картой или бонусами), меняется состояние документа, меняются различные признаки. А после этого - при сохранении - лишь перенос из одной таблицы в другую, и только INSERTы. Вы с Винвордом что ли обычно рнаботаете? Типа, сначала набрали доркумент, потом сохранили :) Я говорю не про кассовы чек, который вылезает из кассового аппарата. В системе есть понятие "документ "Кассовый чек"". Реализовано это как совокупность записей из разных таблиц. Его составление и проведение -- это последовательность шагов, которые должны быть отражены в базе данных, так как в на эту информацию завязана работа других алгоритмов. Пробитие чека на кассе и фиксация результата этой операции -- один из завершающих шагов. Во избежание блокировок в систему заложен специальный механизм, препятствующий одновременному изменению документа из разных мест. Если вы знаете только один способ -- никаких UPDATE, только INSERT, а потом все разом внесем -- то это ваше личное дело. YuRock GJ Продолжаю беседу, потому что вежливый. Мне пишут, я отвечаю. Это не великодушие, а обычная вежливость. YuRock GJ Пока буду исходить из предположения, что в рамках блокирующей транзакции вносятся изменения ту же самую таблицу, которую пытается изменить запрос UPDATE. В рамках одной транзакции можно обновлять одну и ту же запись хоть 500 раз. т т.п. Меня не покидает ощущение, что нард здесь просто стебётся. Я привел выше уже полученные мною результаты. Из них понятно (если запросы к таблицам мониторинга не врут), что транзакций две, и что обе эти транзакции стартовали из моего приложения. Код приложения сложный и ветвистый. В зависимости от настроек, базы данных и даже используемых значений, может выполняться та или иная последовательность операторов. И если при каких-то условиях возникает некорректная обработка, когда проскакиваем мимо завершения одной транзакции и стартуем следующую, то не факт, что такая же последовательность выполнения операторов возникнет на другой базе, с другими настройками и с другими значениями. * * * ъъъъъ Беглое изучение документации (help Delphi 2007) говорит, что <...> Тоже бегло просмотрел (только упор больше делал на исходники, а не на хелп). И пришел, в основном, к таким же выводм. Была надежда, что я что-о недопонял, и есть шарящие люди, которые меня поправят. Ну, да ладно. ъъъъъ Таки образом, поймать дедлок при такой схеме - проще некуда: ты явно стартовал транзакцию, в ее контексте сделал изменения, стартовал другую (не завершив первую транзакцию) и снова поменял ту же запись... Когда приложение разрабатывали, старались использовать короткие транзакции. То есть старт и завершение транзакции в одной подпрограмме. Но потом код разросся (в том числе и те самые подпрограммы с транзакцией), стал более ветвистым... и где-то при каких-то условиях стал возникать ляп: то ли вообще COMMIT пропустили, то ли выполнили его с другим TTransactionDesc. Перерывать все -- это реально умереть и не встать. Сейчас вот вставил в приложение сброс в лог запросов из mon$statements, если на моменет выполнения проблемного UPDATE есть другие активные транзакции. Жаль, что там только перечень запросов, но нет порядка их выполнения (иди все же есть?). Но все же это поможет сократить пространство поиска возможного места ляпа. [+] ъъъъъ Беглое знакомство с dbexpress создало впечатление, что они заточены на работу с серверами, у которых либо нет явного управления транзакциями, или одна транзакция на коннект. У меня сложилось впечатление, что разработчики dbExpress держали в голове веб-приложения: подключились, стартовали транзакцию, открыли запрос, пробежались, создавая html-страничку, завершили работу. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2021, 13:18 |
|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
GJМеня не покидает ощущение, что нард здесь просто стебётся. Да, так всегда случается когда топикстартер переходит от конструктива к нытью "слишком многа букафф, ниасилил, проста скажите на какую кнопку нажать чтобы фсё заработало". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2021, 13:27 |
|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
GJ, последняя попытка: если ты 100% уверен, что конкурирующая тр-ция из того же самого коннекта (а это ничем не подтверждено в данном флуде), то никто не мешает тебе в своём приложении трассировать только свой коннект и сохранять на диск последние N MB трейс-лога в момент обнаружения конфликта. Но для этого придётся делать некоторые телодвижения, да. PS Обложить всё мониторингом - самая плохая идея. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2021, 13:51 |
|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Да, так всегда случается когда топикстартер переходит от конструктива к нытью Где? Диалог вкратце: -- Причина ошибки в том, что запись была изменена в другой транзакции. -- Спасибо, я знаю. -- Блокирует другое приложение. -- Провери вот так и так, получается, что приложение то же самое. -- Переделай все запросы апдейт на INSERT с последующим обновлением в монопольном режиме. -- (тут я просто в афиге и не знаю, что ответить: посоветуйте Микрософту отказаться от окон, так как в них сплошные глюки). -- Выполните трассировку. -- Ошибка только у заказчика, а он не позволит ничего запускать; у меня ошибка не воспроизводится. -- Проверьте все ХП. -- Их несколько тысяч. Можно я посмотрю только те ХП, которые выполняются в блокирующей транзакции? -- ... и дальше по кругу. Пардон, если кого-то пропустил :) hvlad GJ, то никто не мешает тебе в своём приложении трассировать только свой коннект и сохранять на диск последние N MB трейс-лога в момент обнаружения конфликта. Что в данном контексте означает слово "трассировать"? Запускать упомянутую выше программы трассировки? Если да, то на какой машине (я уже знаю все подводные камни :))? На компах заказчика заказчик не позволит, на моем -- ошибка не ловится. hvlad GJ, Обложить всё мониторингом - самая плохая идея. Почему все?! Я разве не говорил, что ошибка возникает только в одном месте. Именно этот один запрос UPDATE я и собираюсь мониторить. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2021, 16:45 |
|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
GJГде? тут я просто в афиге и не знаю, что ответить Их несколько тысяч. Можно я посмотрю только те ХП, которые выполняются в блокирующей транзакции? Вот именно здесь. Этими двумя пунктами ты отказываешься проделывать работу больше определённого предела, ссылаясь, что её получится слишком много в то время как всем остальным понятно, что паллиативом не отделаться и другого способа нет. GJЗапускать упомянутую выше программы трассировки? Нет, запускать сервис трассировки. Из своей программы. Для своей сессии. Но чтение его результатов - тоже большая работа, так что бесперспективняк. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2021, 17:01 |
|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
GJ Я разве не говорил, что ошибка возникает только в одном месте. Именно этот один запрос UPDATE я и собираюсь мониторить. Ватсон, это элементарно делается в своём приложении. В памяти ведётся лог вызываемых модулей и их закрытия. При возникновении ошибки лог выгружается на диск. Это даёт путь вызова "проблемного" модуля, на котором, в смысле пути, что-то пошло не так. Мне всю жизнь хватало этого, я сразу установил такой порядок оформления модулей для своей команды, забывающим запихивать в лог на create название модуля и выпихивать на destroy некоторое время напоминалось о 10% зарплаты, потом дети привыкли (С). С нормальным инструментом, в смысле управления транзакциями, и в интерфейсе SDI этого хватит и для рассматриваемого вопроса - путь конечен и просмотреть его модули недолго. С самостоятельно решающем в какой транзакции что делать и в интерфейсе MDI может оказаться недостаточно. Тогда придётся логировать и старт-финиш транзакций, а может и изменяющих запросов. Но да, если в личную технологию этот простой и логичный шаг не вструмлён изначально, таки придётся пошевелить пальцами. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2021, 17:27 |
|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
Старый плюшевый мишка, у ТС и "интеллектуальные" компоненты с практически полной изоляцией от физического мира, и чужой код, и дурные его объемы, и неизвестны условия устойчивого повторения. ТС попал, тут тупо и долго пахать. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2021, 18:16 |
|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
GJ> Если да, то на какой машине (я уже знаю все подводные камни :))? GJ> На компах заказчика заказчик не позволит На сервере заказчика (если у Вас нет доступа - что логично - пообщайтесь с его ДБА - уж он-то должен быть заинтересован). Ну или GJ> на моем -- ошибка не ловится. Встраивайте логгинг всего и вся в своё приложение - сможете определить если не подробный сценарий, то хотя бы проблемное место (модуль, процедуру и т.д.). Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2021, 20:05 |
|
|
start [/forum/topic.php?fid=40&msg=40113396&tid=1559880]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
160ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 241ms |
total: | 507ms |
0 / 0 |