Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 [5] 6 7 8 9   вперед  Ctrl      все
 Re: Firebird + fbExpress lock conflict  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54772

Гаджимурадов Рустам
Встраивайте логгинг всего и вся в своё приложение

Это ещё больше работы, чем анализ дерева процедур. Не согласится. Шибко тяжко.

Posted via ActualForum NNTP Server 1.5

21 ноя 21, 20:22    [22398776]     Ответить | Цитировать Сообщить модератору
 Re: Firebird + fbExpress lock conflict  [new]
ggreggory
Member

Откуда:
Сообщений: 182
Мне кажется давно уже можно было с помощью IBExpert-а включить трассировку расставив нужные галочки. Делов на 5 минут, гораздо меньше чем тратить столько времени на бессмысленную переписку.
21 ноя 21, 20:47    [22398782]     Ответить | Цитировать Сообщить модератору
 Re: Firebird + fbExpress lock conflict  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54772

ggreggory
Мне кажется давно уже можно было с помощью IBExpert-а включить трассировку
расставив нужные галочки.

Аффтар уверяет, что давно так сделал и второй транзакции не нашёл. Может быть,
даже не врёт...

Posted via ActualForum NNTP Server 1.5

21 ноя 21, 23:06    [22398828]     Ответить | Цитировать Сообщить модератору
 Re: Firebird + fbExpress lock conflict  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 4925
GJ
Вы с Винвордом что ли обычно рнаботаете? Типа, сначала набрали доркумент, потом сохранили :)
Да, именно так. Я сначала набираю, а только потом - сохраняю.
Вы, похоже, хотите наоборот.
22 ноя 21, 00:17    [22398844]     Ответить | Цитировать Сообщить модератору
 Re: Firebird + fbExpress lock conflict  [new]
Старый плюшевый мишка
Member

Откуда:
Сообщений: 1128
YuRock
GJ
Вы с Винвордом что ли обычно рнаботаете? Типа, сначала набрали доркумент, потом сохранили :)
Да, именно так. Я сначала набираю, а только потом - сохраняю.
Вы, похоже, хотите наоборот.


Насколько я понимаю, здесь речь не о популярной у неофитов методе - вставить пустую запись и потом через db-aware контролы апдейтить каждое поле по мере заполнения. А потом удивляться - а что это чтение тормозит. Но в общем случае жизненный цикл документа может измеряться неделями и уходить от апдейтов целиком невозможно. Конкретно здесь речь о статусном поле, которое может быть - подготовка, на согласовании, утверждено, выполнено, аннулировано и может ещё чорта в ступе в зависимости от детализации стадийности процесса.
22 ноя 21, 03:42    [22398857]     Ответить | Цитировать Сообщить модератору
 Re: Firebird + fbExpress lock conflict  [new]
GJ
Member

Откуда:
Сообщений: 50
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 ноя 21, 13:41    [22399079]     Ответить | Цитировать Сообщить модератору
 Re: Firebird + fbExpress lock conflict  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 4925
GJ

YuRock
пропущено...
Да, именно так. Я сначала набираю, а только потом - сохраняю.
Вы, похоже, хотите наоборот.

Понимете, с точки зрения системы управления предприятием или системы электрнного документооборота, документ -- это не то, что вы набираете в Винворде, а сложный объект. А то, что вы набираете и сохраняете в Винворде -- не более, чем печатная форма документа. Впрочем, про это вам уже ответили.
Я, похоже, мало что понимаю и вообще не точно программист, как и все в этой теме, кроме Вас.
22 ноя 21, 13:46    [22399084]     Ответить | Цитировать Сообщить модератору
 Re: Firebird + fbExpress lock conflict  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54772

GJ
Да и зачем просматривать все, если можно просмотреть десяток или два, которые
выполнялись в блокирующей транзакции? Ведь очевидно, что причиной блокировки
послужила одна из них.

"Пони бегает по кругу и в уме круги считает..." (с)

Естественно не надо просматривать все 8к ХП, достаточно просмотреть те, которые
вызываются из твоего приложения. Разве это не очевидно?

GJ
Сервис трассировки -- это что?

Это то, что описано в README.services_extension на которые ссылается
README.trace_services: isc_action_svc_trace_start.

GJ
И если вы внимательно читали тему, то должны были видеть, что я это уже сделал.

Если бы Вы это уже сделали - не сидели бы в этой теме, поскольку "логгигн всего
и вся" уже давно показал бы Вам и где стартует вторая транзакция и где не
завершается первая. Но очевидно, что Вы существо ленивое и протоколируете только
малое число ключевых точек. (Если вообще ключевых...)

Posted via ActualForum NNTP Server 1.5

22 ноя 21, 13:50    [22399086]     Ответить | Цитировать Сообщить модератору
 Re: Firebird + fbExpress lock conflict  [new]
WildSery
Member

Откуда: да, оттуда.
Сообщений: 21031
Старый плюшевый мишка
Конкретно здесь речь о статусном поле, которое может быть - подготовка, на согласовании, утверждено, выполнено, аннулировано и может ещё чорта в ступе в зависимости от детализации стадийности процесса.
Во многих случаях это отдельная таблица статусов, с фиксацией истории. Так что только хардкор insert!
22 ноя 21, 14:07    [22399101]     Ответить | Цитировать Сообщить модератору
 Re: Firebird + fbExpress lock conflict  [new]
WildSery
Member

Откуда: да, оттуда.
Сообщений: 21031
GJ
Речь идет о кассовом чеке.
GJ
Я говорю не про кассовы чек, который вылезает из кассового аппарата. В системе есть понятие "документ "Кассовый чек"".
"А здесь мы селёдку заворачивали".
22 ноя 21, 14:10    [22399103]     Ответить | Цитировать Сообщить модератору
 Re: Firebird + fbExpress lock conflict  [new]
Gallemar
Member

Откуда:
Сообщений: 5675
GJ
Естественно, не нашел. Трассировку то я выполнял (как мне здесь сказали) на локальной базе, а не на той, где появляются (иногда) две транзакции :)

Ага, классическая ситуация, когда ключи надо искать где светло, а не там где потеряли...
И он удивляется тому, что Сибиряков его троллит. Трассировка нужна там, где ситуация воспроизводится, тем более в ситуации с deadlock. Поэтому вопрос "Скажите, вы точно программист? :) " - надо задать самому себе.
22 ноя 21, 14:11    [22399105]     Ответить | Цитировать Сообщить модератору
 Re: Firebird + fbExpress lock conflict  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54772
Gallemar
Ага, классическая ситуация, когда ключи надо искать где светло, а не там где
потеряли...
И он удивляется тому, что Сибиряков его троллит.

Вообще-то если бы ты прочитал топик, то увидел, что совет трассировать на
локальной базе дал именно я. Это вполне логичный шаг когда начинаешь ковыряться в чужом приложении и читать исходники противно или лень. Чтобы отсечь простейшую из возможностей: его приложение всегда стартует несколько транзакций, а конфликт - результат их неудачной гонки.

Ну и выявить список вызываемых процедур это тоже должно было помочь, но он не
сделал этого шага.

Сообщение было отредактировано: 22 ноя 21, 14:22
22 ноя 21, 14:17    [22399111]     Ответить | Цитировать Сообщить модератору
 Re: Firebird + fbExpress lock conflict  [new]
Gallemar
Member

Откуда:
Сообщений: 5675
Dimitry Sibiryakov
Gallemar
Ага, классическая ситуация, когда ключи надо искать где светло, а не там где
потеряли...
И он удивляется тому, что Сибиряков его троллит.

Вообще-то если бы ты прочитал топик, то увидел, что совет трассировать на локальной базе дал именно я.

Я по диагонали проглядел топик. Ладно, первый шаг он сделал, ничего не нашел и успокоился?
22 ноя 21, 14:26    [22399115]     Ответить | Цитировать Сообщить модератору
 Re: Firebird + fbExpress lock conflict  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54772

Gallemar
Ладно, первый шаг он сделал, ничего не нашел и успокоился?

Ага. Вместо того, чтобы методично углублять и расширять область поиска, он начал
плясать с бубном в поисках серебряной пули, которая принесёт ему готовый ответ
на блюдечке с золотой каёмочкой. Поэтому я тут с попкорном и вувузелой.

Posted via ActualForum NNTP Server 1.5

22 ноя 21, 14:34    [22399123]     Ответить | Цитировать Сообщить модератору
 Re: Firebird + fbExpress lock conflict  [new]
Gallemar
Member

Откуда:
Сообщений: 5675
Dimitry Sibiryakov

я тут с попкорном и вувузелой.

А пиво?
22 ноя 21, 14:36    [22399124]     Ответить | Цитировать Сообщить модератору
 Re: Firebird + fbExpress lock conflict  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54772

Пиво - по субботам.

Posted via ActualForum NNTP Server 1.5

22 ноя 21, 14:51    [22399128]     Ответить | Цитировать Сообщить модератору
 Re: Firebird + fbExpress lock conflict  [new]
ggreggory
Member

Откуда:
Сообщений: 182
GJ

Сервис трассировки -- это что? Это какой-то экзе-файл (какой? где лежит?)? Или это сервис MS Windows (название?)?


Если не хотите изучать тему и если у вас русскоязычный заказчик - уговорите его установить программу IBExpert, она для русскоязычных пользователей бесплатна. В ней Services, Trace and audit.

К сообщению приложен файл. Размер - 18Kb
22 ноя 21, 15:00    [22399133]     Ответить | Цитировать Сообщить модератору
 Re: Firebird + fbExpress lock conflict  [new]
Старый плюшевый мишка
Member

Откуда:
Сообщений: 1128
GJ

Не понял, что здесь понимается под словом "модуль".


А Вы точно программист? (C) Насколько я понял, Вы работаете с Delphi. Так вот, там есть такое понятие Unit. Чаще всего содержит объект типа TForm, предназначенный для предоставления пользователю некоторого интерфейса. В результате действий пользователя с помощью этого интерфейса в обработчиках событий, связанных с визуальными контролами (это всякие кнопочки и тому подобное) выполняются в том числе старты и завершения транзакций и запросы к базе. Как-то такЪ.
22 ноя 21, 16:59    [22399204]     Ответить | Цитировать Сообщить модератору
 Re: Firebird + fbExpress lock conflict  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 63459
Может, он просто тролль?...

Posted via ActualForum NNTP Server 1.5

22 ноя 21, 20:37    [22399389]     Ответить | Цитировать Сообщить модератору
 Re: Firebird + fbExpress lock conflict  [new]
GJ
Member

Откуда:
Сообщений: 50
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 ноя 21, 11:07    [22399559]     Ответить | Цитировать Сообщить модератору
 Re: Firebird + fbExpress lock conflict  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 11092
GJ
При этом в Firebird транзакция создается автоматом, но в приложении TSQLConnection.InTransaction остается false. Собственно, а какова дальнейшая судьба этой транзакции? Она будет болтаться до закрытия соединения?
Вопрос не критичный (любопытство), поэтому специально рыть не нужно. Просто на тот случай, если кто-то уже сталкивался и знает.



Firebird никогда сам не создаёт транзакции. Да есть СУБД в которых если ты не стартовал транзакцию, то при первом выполнении запроса она сама стартует. НО это не случай ФБ. В Firebird страт транзакции (за исключением автономных транзакций) всегда происходит со стороны клиента.
Так что насчёт автоматического старта транзакций это вопросы к dbExpress. Ещё раз повторяю Firebird это точно не делает.
23 ноя 21, 11:15    [22399563]     Ответить | Цитировать Сообщить модератору
 Re: Firebird + fbExpress lock conflict  [new]
ъъъъъ
Member

Откуда:
Сообщений: 2653
GJ
Мы можем открыть запрос не стартуя явно транзакцию. При этом в Firebird транзакция создается автоматом, но в приложении TSQLConnection.InTransaction остается false. Собственно, а какова дальнейшая судьба этой транзакции?

После выполнения запроса созданная транзакция завершается, тоже автоматически. Что на нижнем уровне - неизвестно, исходники "драйвера" firebird недоступны.
23 ноя 21, 11:16    [22399564]     Ответить | Цитировать Сообщить модератору
 Re: Firebird + fbExpress lock conflict  [new]
ъъъъъ
Member

Откуда:
Сообщений: 2653
Симонов Денис
Firebird никогда сам не создаёт транзакции.

Фаерберд не создает, dbexpress - создает.
23 ноя 21, 11:17    [22399566]     Ответить | Цитировать Сообщить модератору
 Re: Firebird + fbExpress lock conflict  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 11092
ъъъъъ,

я тут как и почти все dbExpress знаю чуть меньше чем никак.
Что как и когда он создаёт мне не ведомо. Как тут уже сказали dbExpress это не удачная реинкарнация BDE.
То же с закрытыми исходниками драйверов и с глюками, которые сам уже не исправишь.
23 ноя 21, 11:26    [22399573]     Ответить | Цитировать Сообщить модератору
 Re: Firebird + fbExpress lock conflict  [new]
ъъъъъ
Member

Откуда:
Сообщений: 2653
Симонов Денис,

данную тему можно как историю о применении dbexpress, детей пугать...
23 ноя 21, 11:56    [22399580]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 [5] 6 7 8 9   вперед  Ctrl      все
Все форумы / Firebird, InterBase Ответить