powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Firebird + fbExpress lock conflict
25 сообщений из 204, страница 5 из 9
Firebird + fbExpress lock conflict
    #40113598
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамВстраивайте логгинг всего и вся в своё приложение

Это ещё больше работы, чем анализ дерева процедур. Не согласится. Шибко тяжко.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Firebird + fbExpress lock conflict
    #40113601
ggreggory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне кажется давно уже можно было с помощью IBExpert-а включить трассировку расставив нужные галочки. Делов на 5 минут, гораздо меньше чем тратить столько времени на бессмысленную переписку.
...
Рейтинг: 0 / 0
Firebird + fbExpress lock conflict
    #40113621
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ggreggoryМне кажется давно уже можно было с помощью IBExpert-а включить трассировку
расставив нужные галочки.

Аффтар уверяет, что давно так сделал и второй транзакции не нашёл. Может быть,
даже не врёт...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Firebird + fbExpress lock conflict
    #40113627
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GJ
Вы с Винвордом что ли обычно рнаботаете? Типа, сначала набрали доркумент, потом сохранили :)
Да, именно так. Я сначала набираю, а только потом - сохраняю.
Вы, похоже, хотите наоборот.
...
Рейтинг: 0 / 0
Firebird + fbExpress lock conflict
    #40113637
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock
GJ
Вы с Винвордом что ли обычно рнаботаете? Типа, сначала набрали доркумент, потом сохранили :)
Да, именно так. Я сначала набираю, а только потом - сохраняю.
Вы, похоже, хотите наоборот.


Насколько я понимаю, здесь речь не о популярной у неофитов методе - вставить пустую запись и потом через db-aware контролы апдейтить каждое поле по мере заполнения. А потом удивляться - а что это чтение тормозит. Но в общем случае жизненный цикл документа может измеряться неделями и уходить от апдейтов целиком невозможно. Конкретно здесь речь о статусном поле, которое может быть - подготовка, на согласовании, утверждено, выполнено, аннулировано и может ещё чорта в ступе в зависимости от детализации стадийности процесса.
...
Рейтинг: 0 / 0
Firebird + fbExpress lock conflict
    #40113746
GJ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GJ
Гость
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
Вы с Винвордом что ли обычно рнаботаете? Типа, сначала набрали доркумент, потом сохранили :)
Да, именно так. Я сначала набираю, а только потом - сохраняю.
Вы, похоже, хотите наоборот.

Понимете, с точки зрения системы управления предприятием или системы электрнного документооборота, документ -- это не то, что вы набираете в Винворде, а сложный объект. А то, что вы набираете и сохраняете в Винворде -- не более, чем печатная форма документа. Впрочем, про это вам уже ответили.
...
Рейтинг: 0 / 0
Firebird + fbExpress lock conflict
    #40113750
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GJ

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

Понимете, с точки зрения системы управления предприятием или системы электрнного документооборота, документ -- это не то, что вы набираете в Винворде, а сложный объект. А то, что вы набираете и сохраняете в Винворде -- не более, чем печатная форма документа. Впрочем, про это вам уже ответили.
Я, похоже, мало что понимаю и вообще не точно программист, как и все в этой теме, кроме Вас.
...
Рейтинг: 0 / 0
Firebird + fbExpress lock conflict
    #40113752
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GJДа и зачем просматривать все, если можно просмотреть десяток или два, которые
выполнялись в блокирующей транзакции? Ведь очевидно, что причиной блокировки
послужила одна из них.

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

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

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

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

Если бы Вы это уже сделали - не сидели бы в этой теме, поскольку "логгигн всего
и вся" уже давно показал бы Вам и где стартует вторая транзакция и где не
завершается первая. Но очевидно, что Вы существо ленивое и протоколируете только
малое число ключевых точек. (Если вообще ключевых...)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Firebird + fbExpress lock conflict
    #40113764
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Старый плюшевый мишка
Конкретно здесь речь о статусном поле, которое может быть - подготовка, на согласовании, утверждено, выполнено, аннулировано и может ещё чорта в ступе в зависимости от детализации стадийности процесса.
Во многих случаях это отдельная таблица статусов, с фиксацией истории. Так что только хардкор insert!
...
Рейтинг: 0 / 0
Firebird + fbExpress lock conflict
    #40113766
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GJ
Речь идет о кассовом чеке.
GJ
Я говорю не про кассовы чек, который вылезает из кассового аппарата. В системе есть понятие "документ "Кассовый чек"".
"А здесь мы селёдку заворачивали".
...
Рейтинг: 0 / 0
Firebird + fbExpress lock conflict
    #40113768
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GJ
Естественно, не нашел. Трассировку то я выполнял (как мне здесь сказали) на локальной базе, а не на той, где появляются (иногда) две транзакции :)

Ага, классическая ситуация, когда ключи надо искать где светло, а не там где потеряли...
И он удивляется тому, что Сибиряков его троллит. Трассировка нужна там, где ситуация воспроизводится, тем более в ситуации с deadlock. Поэтому вопрос "Скажите, вы точно программист? :) " - надо задать самому себе.
...
Рейтинг: 0 / 0
Firebird + fbExpress lock conflict
    #40113773
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GallemarАга, классическая ситуация, когда ключи надо искать где светло, а не там где
потеряли...
И он удивляется тому, что Сибиряков его троллит.

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

Ну и выявить список вызываемых процедур это тоже должно было помочь, но он не
сделал этого шага.
...
Рейтинг: 0 / 0
Firebird + fbExpress lock conflict
    #40113776
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
GallemarАга, классическая ситуация, когда ключи надо искать где светло, а не там где
потеряли...
И он удивляется тому, что Сибиряков его троллит.

Вообще-то если бы ты прочитал топик, то увидел, что совет трассировать на локальной базе дал именно я.
Я по диагонали проглядел топик. Ладно, первый шаг он сделал, ничего не нашел и успокоился?
...
Рейтинг: 0 / 0
Firebird + fbExpress lock conflict
    #40113781
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GallemarЛадно, первый шаг он сделал, ничего не нашел и успокоился?

Ага. Вместо того, чтобы методично углублять и расширять область поиска, он начал
плясать с бубном в поисках серебряной пули, которая принесёт ему готовый ответ
на блюдечке с золотой каёмочкой. Поэтому я тут с попкорном и вувузелой.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Firebird + fbExpress lock conflict
    #40113782
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

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

А пиво?
...
Рейтинг: 0 / 0
Firebird + fbExpress lock conflict
    #40113786
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пиво - по субботам.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Firebird + fbExpress lock conflict
    #40113788
ggreggory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GJ

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


Если не хотите изучать тему и если у вас русскоязычный заказчик - уговорите его установить программу IBExpert, она для русскоязычных пользователей бесплатна. В ней Services, Trace and audit.
...
Рейтинг: 0 / 0
Firebird + fbExpress lock conflict
    #40113831
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GJ

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


А Вы точно программист? (C) Насколько я понял, Вы работаете с Delphi. Так вот, там есть такое понятие Unit. Чаще всего содержит объект типа TForm, предназначенный для предоставления пользователю некоторого интерфейса. В результате действий пользователя с помощью этого интерфейса в обработчиках событий, связанных с визуальными контролами (это всякие кнопочки и тому подобное) выполняются в том числе старты и завершения транзакций и запросы к базе. Как-то такЪ.
...
Рейтинг: 0 / 0
Firebird + fbExpress lock conflict
    #40113968
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может, он просто тролль?...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Firebird + fbExpress lock conflict
    #40114096
GJ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GJ
Гость
YuRock
Я, похоже, мало что понимаю и вообще не точно программист, как и все в этой теме , кроме Вас.

Прекращайте говорить за всех, говорите за себя. Есть в этой теме люди, которые нормально отвечают.

Dimitry Sibiryakov

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

Ну, будет 2К. Почему вы упорно отвергаете вариант просмотреть 2 десятка ХП, которые выполняются в блокирующей транзакции?

Dimitry Sibiryakov

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

В моем приложении может одновременно работать три транзакции для разных целей. Нахрена мне их все смотреть. Ошибка возникает только в одно месте, я уже устал это повторять. В одном единственном. Именно в этом месте я и вставил логирование. Теперь просто жду, когда у заказчика возникнет ошибка и мне передадут лог с перечнем ХП, выполнявшихся в блокирующей транзакции.

Gallemar
И он удивляется тому, что Сибиряков его троллит.

Так это оказывается троллинг был?! Теперь понятно... а то я думаю, что за идиотизм :)

ggreggory, спасибо. Теперь понятно.
IBExpert-ом я, конечно же, пользуюсь, но в сервисы не лазил. Надо будет посмотреть при случае.

Старый плюшевый мишка
GJ

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


А Вы точно программист? (C) Насколько я понял, Вы работаете с Delphi. Так вот, там есть такое понятие Unit.

Слово "модуль" является шибко многозначниым как в русском языке вообще, так и в IT в частности. Поэтому я и попросил вас уточнить, что именно подразумевается под словом "модуль" в вашем сообщении. Если паскалевский UNIT, то тогда странно... плохо стыкуется с фразой "лог вызываемых модулей и их закрытия". Unit вызывается компилятором, потом скомпилированный вариант вызывается линкером, после чего его код интегрируется в единый исполняемый файл, и там уже никаких вызовов "модуля" нет.

* * *
Еще один маленький вопрос по dbExpress. Понимаю, что не по теме, так как здесь специалисты по Firebird, но все же... вдруг кто-то знает... Мы можем открыть запрос не стартуя явно транзакцию. При этом в Firebird транзакция создается автоматом, но в приложении TSQLConnection.InTransaction остается false. Собственно, а какова дальнейшая судьба этой транзакции? Она будет болтаться до закрытия соединения?
Вопрос не критичный (любопытство), поэтому специально рыть не нужно. Просто на тот случай, если кто-то уже сталкивался и знает.
...
Рейтинг: 0 / 0
Firebird + fbExpress lock conflict
    #40114099
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GJПри этом в Firebird транзакция создается автоматом, но в приложении TSQLConnection.InTransaction остается false. Собственно, а какова дальнейшая судьба этой транзакции? Она будет болтаться до закрытия соединения?
Вопрос не критичный (любопытство), поэтому специально рыть не нужно. Просто на тот случай, если кто-то уже сталкивался и знает.


Firebird никогда сам не создаёт транзакции. Да есть СУБД в которых если ты не стартовал транзакцию, то при первом выполнении запроса она сама стартует. НО это не случай ФБ. В Firebird страт транзакции (за исключением автономных транзакций) всегда происходит со стороны клиента.
Так что насчёт автоматического старта транзакций это вопросы к dbExpress. Ещё раз повторяю Firebird это точно не делает.
...
Рейтинг: 0 / 0
Firebird + fbExpress lock conflict
    #40114100
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GJ
Мы можем открыть запрос не стартуя явно транзакцию. При этом в Firebird транзакция создается автоматом, но в приложении TSQLConnection.InTransaction остается false. Собственно, а какова дальнейшая судьба этой транзакции?

После выполнения запроса созданная транзакция завершается, тоже автоматически. Что на нижнем уровне - неизвестно, исходники "драйвера" firebird недоступны.
...
Рейтинг: 0 / 0
Firebird + fbExpress lock conflict
    #40114101
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис
Firebird никогда сам не создаёт транзакции.

Фаерберд не создает, dbexpress - создает.
...
Рейтинг: 0 / 0
Firebird + fbExpress lock conflict
    #40114104
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ,

я тут как и почти все dbExpress знаю чуть меньше чем никак.
Что как и когда он создаёт мне не ведомо. Как тут уже сказали dbExpress это не удачная реинкарнация BDE.
То же с закрытыми исходниками драйверов и с глюками, которые сам уже не исправишь.
...
Рейтинг: 0 / 0
Firebird + fbExpress lock conflict
    #40114106
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис,

данную тему можно как историю о применении dbexpress, детей пугать...
...
Рейтинг: 0 / 0
25 сообщений из 204, страница 5 из 9
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Firebird + fbExpress lock conflict
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]