|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамВстраивайте логгинг всего и вся в своё приложение Это ещё больше работы, чем анализ дерева процедур. Не согласится. Шибко тяжко. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2021, 20:22 |
|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
Мне кажется давно уже можно было с помощью IBExpert-а включить трассировку расставив нужные галочки. Делов на 5 минут, гораздо меньше чем тратить столько времени на бессмысленную переписку. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2021, 20:47 |
|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
ggreggoryМне кажется давно уже можно было с помощью IBExpert-а включить трассировку расставив нужные галочки. Аффтар уверяет, что давно так сделал и второй транзакции не нашёл. Может быть, даже не врёт... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2021, 23:06 |
|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
GJ Вы с Винвордом что ли обычно рнаботаете? Типа, сначала набрали доркумент, потом сохранили :) Вы, похоже, хотите наоборот. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 00:17 |
|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
YuRock GJ Вы с Винвордом что ли обычно рнаботаете? Типа, сначала набрали доркумент, потом сохранили :) Вы, похоже, хотите наоборот. Насколько я понимаю, здесь речь не о популярной у неофитов методе - вставить пустую запись и потом через db-aware контролы апдейтить каждое поле по мере заполнения. А потом удивляться - а что это чтение тормозит. Но в общем случае жизненный цикл документа может измеряться неделями и уходить от апдейтов целиком невозможно. Конкретно здесь речь о статусном поле, которое может быть - подготовка, на согласовании, утверждено, выполнено, аннулировано и может ещё чорта в ступе в зависимости от детализации стадийности процесса. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 03:42 |
|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov GJГде? тут я просто в афиге и не знаю, что ответить Их несколько тысяч. Можно я посмотрю только те ХП, которые выполняются в блокирующей транзакции? Вот именно здесь. Этими двумя пунктами ты отказываешься проделывать работу больше определённого предела, ссылаясь, что её получится слишком много в то время как всем остальным понятно, что паллиативом не отделаться и другого способа нет. Я не отказываюсь, а говорю о неэффективности такого подхода. Вы, наверное, просто нее представляете себе, что такое 8 тыс. ХП чужого кода. Да и зачем просматривать все, если можно просмотреть десяток или два, которые выполнялись в блокирующей транзакции? Ведь очевидно, что причиной блокировки послужила одна из них. Dimitry Sibiryakov всем остальным понятно, что паллиативом не отделаться и другого способа нет. Отвыкайте от привычки говорить за всех. Остальные вот предлагают более оптимальные решения. Dimitry Sibiryakov GJЗапускать упомянутую выше программы трассировки? Нет, запускать сервис трассировки. Из своей программы. Для своей сессии. Но чтение его результатов - тоже большая работа, так что бесперспективняк. Сервис трассировки -- это что? Это какой-то экзе-файл (какой? где лежит?)? Или это сервис MS Windows (название?)? Старый плюшевый мишка GJ Я разве не говорил, что ошибка возникает только в одном месте. Именно этот один запрос UPDATE я и собираюсь мониторить. Ватсон, это элементарно делается в своём приложении. В памяти ведётся лог вызываемых модулей и их закрытия. При возникновении ошибки лог выгружается на диск. Это даёт путь вызова "проблемного" модуля, на котором, в смысле пути, что-то пошло не так. Мне всю жизнь хватало этого, я сразу установил такой порядок оформления модулей для своей команды, забывающим запихивать в лог на create название модуля и выпихивать на destroy некоторое время напоминалось о 10% зарплаты, потом дети привыкли (С). С нормальным инструментом, в смысле управления транзакциями, и в интерфейсе SDI этого хватит и для рассматриваемого вопроса - путь конечен и просмотреть его модули недолго. С самостоятельно решающем в какой транзакции что делать и в интерфейсе MDI может оказаться недостаточно. Тогда придётся логировать и старт-финиш транзакций, а может и изменяющих запросов. Но да, если в личную технологию этот простой и логичный шаг не вструмлён изначально, таки придётся пошевелить пальцами. Не понял, что здесь понимается под словом "модуль". А вот идея логировать все начала и завершения транзакций интересная. Правда, допускаю, что в коде могут оказаться запросы, которые выполняются без явного старта транзакции, то есть если к моменту выполнения запроса не будет ни одной активной транзакции, то выполнится автоматический старт транзакции. Надо будет подумать, как это отловить, и посмотреть, как она завершается. ъъъъъ ТС попал Так я и не стал бы лезть на форум, если бы проблема была пустяшная :) Гаджимурадов Рустам, Обращение к админам заказчика оставим на самый крайний случай. Сейчас буду именно логировать проблемные места и анализировать код по данным логирования. Dimitry Sibiryakov Гаджимурадов РустамВстраивайте логгинг всего и вся в своё приложение Это ещё больше работы, чем анализ дерева процедур. Скажите, вы точно программист? :) Нормальный программист -- существо "ленивое": напрочь отказывается заниматься рутиной, предпочитая путем хитрых программных извращений переложить выполнение рутины на комп. И если вы внимательно читали тему, то должны были видеть, что я это уже сделал. ggreggory Мне кажется давно уже можно было с помощью IBExpert-а включить трассировку расставив нужные галочки. Делов на 5 минут, гораздо меньше чем тратить столько времени на бессмысленную переписку. Запустить трассировку на пару недель на всех базах заказчика, не спрашивая разрешения заказчика? А так можно? Dimitry Sibiryakov ggreggoryМне кажется давно уже можно было с помощью IBExpert-а включить трассировку расставив нужные галочки. Аффтар уверяет, что давно так сделал и второй транзакции не нашёл. Естественно, не нашел. Трассировку то я выполнял (как мне здесь сказали) на локальной базе, а не на той, где появляются (иногда) две транзакции :) YuRock GJ Вы с Винвордом что ли обычно рнаботаете? Типа, сначала набрали доркумент, потом сохранили :) Вы, похоже, хотите наоборот. Понимете, с точки зрения системы управления предприятием или системы электрнного документооборота, документ -- это не то, что вы набираете в Винворде, а сложный объект. А то, что вы набираете и сохраняете в Винворде -- не более, чем печатная форма документа. Впрочем, про это вам уже ответили. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 13:41 |
|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
GJ YuRock пропущено... Да, именно так. Я сначала набираю, а только потом - сохраняю. Вы, похоже, хотите наоборот. Понимете, с точки зрения системы управления предприятием или системы электрнного документооборота, документ -- это не то, что вы набираете в Винворде, а сложный объект. А то, что вы набираете и сохраняете в Винворде -- не более, чем печатная форма документа. Впрочем, про это вам уже ответили. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 13:46 |
|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
GJДа и зачем просматривать все, если можно просмотреть десяток или два, которые выполнялись в блокирующей транзакции? Ведь очевидно, что причиной блокировки послужила одна из них. "Пони бегает по кругу и в уме круги считает..." (с) Естественно не надо просматривать все 8к ХП, достаточно просмотреть те, которые вызываются из твоего приложения. Разве это не очевидно? GJСервис трассировки -- это что? Это то, что описано в README.services_extension на которые ссылается README.trace_services: isc_action_svc_trace_start. GJИ если вы внимательно читали тему, то должны были видеть, что я это уже сделал. Если бы Вы это уже сделали - не сидели бы в этой теме, поскольку "логгигн всего и вся" уже давно показал бы Вам и где стартует вторая транзакция и где не завершается первая. Но очевидно, что Вы существо ленивое и протоколируете только малое число ключевых точек. (Если вообще ключевых...) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 13:50 |
|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
Старый плюшевый мишка Конкретно здесь речь о статусном поле, которое может быть - подготовка, на согласовании, утверждено, выполнено, аннулировано и может ещё чорта в ступе в зависимости от детализации стадийности процесса. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 14:07 |
|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
GJ Речь идет о кассовом чеке. GJ Я говорю не про кассовы чек, который вылезает из кассового аппарата. В системе есть понятие "документ "Кассовый чек"". ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 14:10 |
|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
GJ Естественно, не нашел. Трассировку то я выполнял (как мне здесь сказали) на локальной базе, а не на той, где появляются (иногда) две транзакции :) Ага, классическая ситуация, когда ключи надо искать где светло, а не там где потеряли... И он удивляется тому, что Сибиряков его троллит. Трассировка нужна там, где ситуация воспроизводится, тем более в ситуации с deadlock. Поэтому вопрос "Скажите, вы точно программист? :) " - надо задать самому себе. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 14:11 |
|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
GallemarАга, классическая ситуация, когда ключи надо искать где светло, а не там где потеряли... И он удивляется тому, что Сибиряков его троллит. Вообще-то если бы ты прочитал топик, то увидел, что совет трассировать на локальной базе дал именно я. Это вполне логичный шаг когда начинаешь ковыряться в чужом приложении и читать исходники противно или лень. Чтобы отсечь простейшую из возможностей: его приложение всегда стартует несколько транзакций, а конфликт - результат их неудачной гонки. Ну и выявить список вызываемых процедур это тоже должно было помочь, но он не сделал этого шага. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 14:17 |
|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov GallemarАга, классическая ситуация, когда ключи надо искать где светло, а не там где потеряли... И он удивляется тому, что Сибиряков его троллит. Вообще-то если бы ты прочитал топик, то увидел, что совет трассировать на локальной базе дал именно я. Я по диагонали проглядел топик. Ладно, первый шаг он сделал, ничего не нашел и успокоился? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 14:26 |
|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
GallemarЛадно, первый шаг он сделал, ничего не нашел и успокоился? Ага. Вместо того, чтобы методично углублять и расширять область поиска, он начал плясать с бубном в поисках серебряной пули, которая принесёт ему готовый ответ на блюдечке с золотой каёмочкой. Поэтому я тут с попкорном и вувузелой. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 14:34 |
|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov я тут с попкорном и вувузелой. А пиво? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 14:36 |
|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
Пиво - по субботам. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 14:51 |
|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
GJ Сервис трассировки -- это что? Это какой-то экзе-файл (какой? где лежит?)? Или это сервис MS Windows (название?)? Если не хотите изучать тему и если у вас русскоязычный заказчик - уговорите его установить программу IBExpert, она для русскоязычных пользователей бесплатна. В ней Services, Trace and audit. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 15:00 |
|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
GJ Не понял, что здесь понимается под словом "модуль". А Вы точно программист? (C) Насколько я понял, Вы работаете с Delphi. Так вот, там есть такое понятие Unit. Чаще всего содержит объект типа TForm, предназначенный для предоставления пользователю некоторого интерфейса. В результате действий пользователя с помощью этого интерфейса в обработчиках событий, связанных с визуальными контролами (это всякие кнопочки и тому подобное) выполняются в том числе старты и завершения транзакций и запросы к базе. Как-то такЪ. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 16:59 |
|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
Может, он просто тролль?... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 20:37 |
|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
YuRock Я, похоже, мало что понимаю и вообще не точно программист, как и все в этой теме , кроме Вас. Прекращайте говорить за всех, говорите за себя. Есть в этой теме люди, которые нормально отвечают. Dimitry Sibiryakov Естественно не надо просматривать все 8к ХП, достаточно просмотреть те, которые вызываются из твоего приложения. Разве это не очевидно? Ну, будет 2К. Почему вы упорно отвергаете вариант просмотреть 2 десятка ХП, которые выполняются в блокирующей транзакции? Dimitry Sibiryakov Если бы Вы это уже сделали - не сидели бы в этой теме, поскольку "логгигн всего и вся" уже давно показал бы Вам и где стартует вторая транзакция и где не завершается первая. Но очевидно, что Вы существо ленивое и протоколируете только малое число ключевых точек. (Если вообще ключевых...) В моем приложении может одновременно работать три транзакции для разных целей. Нахрена мне их все смотреть. Ошибка возникает только в одно месте, я уже устал это повторять. В одном единственном. Именно в этом месте я и вставил логирование. Теперь просто жду, когда у заказчика возникнет ошибка и мне передадут лог с перечнем ХП, выполнявшихся в блокирующей транзакции. Gallemar И он удивляется тому, что Сибиряков его троллит. Так это оказывается троллинг был?! Теперь понятно... а то я думаю, что за идиотизм :) ggreggory, спасибо. Теперь понятно. IBExpert-ом я, конечно же, пользуюсь, но в сервисы не лазил. Надо будет посмотреть при случае. Старый плюшевый мишка GJ Не понял, что здесь понимается под словом "модуль". А Вы точно программист? (C) Насколько я понял, Вы работаете с Delphi. Так вот, там есть такое понятие Unit. Слово "модуль" является шибко многозначниым как в русском языке вообще, так и в IT в частности. Поэтому я и попросил вас уточнить, что именно подразумевается под словом "модуль" в вашем сообщении. Если паскалевский UNIT, то тогда странно... плохо стыкуется с фразой "лог вызываемых модулей и их закрытия". Unit вызывается компилятором, потом скомпилированный вариант вызывается линкером, после чего его код интегрируется в единый исполняемый файл, и там уже никаких вызовов "модуля" нет. * * * Еще один маленький вопрос по dbExpress. Понимаю, что не по теме, так как здесь специалисты по Firebird, но все же... вдруг кто-то знает... Мы можем открыть запрос не стартуя явно транзакцию. При этом в Firebird транзакция создается автоматом, но в приложении TSQLConnection.InTransaction остается false. Собственно, а какова дальнейшая судьба этой транзакции? Она будет болтаться до закрытия соединения? Вопрос не критичный (любопытство), поэтому специально рыть не нужно. Просто на тот случай, если кто-то уже сталкивался и знает. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2021, 11:07 |
|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
GJПри этом в Firebird транзакция создается автоматом, но в приложении TSQLConnection.InTransaction остается false. Собственно, а какова дальнейшая судьба этой транзакции? Она будет болтаться до закрытия соединения? Вопрос не критичный (любопытство), поэтому специально рыть не нужно. Просто на тот случай, если кто-то уже сталкивался и знает. Firebird никогда сам не создаёт транзакции. Да есть СУБД в которых если ты не стартовал транзакцию, то при первом выполнении запроса она сама стартует. НО это не случай ФБ. В Firebird страт транзакции (за исключением автономных транзакций) всегда происходит со стороны клиента. Так что насчёт автоматического старта транзакций это вопросы к dbExpress. Ещё раз повторяю Firebird это точно не делает. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2021, 11:15 |
|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
GJ Мы можем открыть запрос не стартуя явно транзакцию. При этом в Firebird транзакция создается автоматом, но в приложении TSQLConnection.InTransaction остается false. Собственно, а какова дальнейшая судьба этой транзакции? После выполнения запроса созданная транзакция завершается, тоже автоматически. Что на нижнем уровне - неизвестно, исходники "драйвера" firebird недоступны. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2021, 11:16 |
|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
Симонов Денис Firebird никогда сам не создаёт транзакции. Фаерберд не создает, dbexpress - создает. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2021, 11:17 |
|
Firebird + fbExpress lock conflict
|
|||
---|---|---|---|
#18+
ъъъъъ, я тут как и почти все dbExpress знаю чуть меньше чем никак. Что как и когда он создаёт мне не ведомо. Как тут уже сказали dbExpress это не удачная реинкарнация BDE. То же с закрытыми исходниками драйверов и с глюками, которые сам уже не исправишь. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2021, 11:26 |
|
|
start [/forum/topic.php?fid=40&msg=40114106&tid=1559880]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
155ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
others: | 298ms |
total: | 556ms |
0 / 0 |