Конференция "Базы" » Как исправить ситуацию с тупиками? [D7, IB 7.5]
 
  • Deadlock fixer (13.10.09 15:58) [0]
    К базе (через локальные соединения) подключены две программы, которые делают update одной и той же таблице (записи разные, насколько мне представляется).

    Пишущие транзакции короткие - они сразу же закрываются после запроса на апдейт.

    Первый софт, транзакция: read_committed rec_version.
    Второй софт, транзакция: read_committed rec_version nowait.

    Есть еще несколько транзакций, они все read_committed
    rec_version nowait read, и, думаю, на эту проблему не влияют.

    На второй программе происходит deadlock: lock conflict on no wait transaction deadlock.

    Через где-то 4 минуты (смотрю всё по эвриковским логам) происходит deadlock на первой программе: deadlock
    update conflicts with concurrent update.

    Всё это происходит на IB 7.5 и случается достаточно часто (несколько дедлоков в день). На FB 2.1 этой проблемы нет.

    Как лучше исправить такую ситуацию?
  • Виталий Панасенко (13.10.09 17:53) [1]
    а почему тогда не юзать ФБ? или "политика Партии такая", строго коммерческое ПО?
  • Deadlock fixer (13.10.09 18:27) [2]
    Политика - что бы работало везде - и на IB и на FB. У юзеров кое-где стоит IB, и они с него перелезть не могут - часть третьестороннего софта работает исключитетельно под IB.
  • Loginov Dmitry © (14.10.09 00:14) [3]
    > У юзеров кое-где стоит IB, и они с него перелезть не могут
    > - часть третьестороннего софта работает исключитетельно
    > под IB.


    В чем проблема? И пусть третьесторонний софт работает на IB.
    Что мешает параллельно FB поставить? База чтоль одна и та же?
  • Deadlock fixer (14.10.09 03:10) [4]
    И как они на одном порту будут работать (некоторые коннекты в софте - сетевые, про них не писал - в глюке не замечены)?

    Базы разные.
  • Loginov Dmitry © (14.10.09 09:46) [5]

    > И как они на одном порту будут работать


    FB можно на другой порт поставить.
  • Deadlock fixer (14.10.09 12:21) [6]
    Хорошо, строку коннекта нашел, как поменять. Вспомнилось... А GDS32.DLL? Что с ней делать?
  • Deadlock fixer (14.10.09 12:29) [7]
    Может таки можно что-то с транзакциями придумать? Установка и настройка параллельно FB и IB автоматом - непростая штука. Наши юзеры этим заниматься точно не будут (а ближайшие админы, часто, в 200-300 километрах) - придётся инсталлятором порты править в инишке FB, как-то разруливать проблему с GDS32.DLL. Опять же - юзеры могут переставить FB в любой момент, порт и GDS32.DLL, конечно, никто руками менять не будет... Надёжность системы падает.
  • Sergey13 © (14.10.09 13:16) [8]
    > [0] Deadlock fixer   (13.10.09 15:58)

    > Через где-то 4 минуты (смотрю всё по эвриковским логам)
    > происходит deadlock

    Не совсем понятно - софт твой или ты его просто настаиваешь/админишь/сопровождаешь?
    Если ты автор - смотри программу: на чем, когда и почему клинит, отлавливай баг и исправляй. Или ты хочешь какую то волшебную галочку поставить, что бы не клинило? Так наверное вряд ли получится.
    ИМХО.
  • Sergey13 © (14.10.09 13:18) [9]
    > [0] Deadlock fixer   (13.10.09 15:58)
    > Всё это происходит на IB 7.5 и случается достаточно часто
    > (несколько дедлоков в день). На FB 2.1 этой проблемы нет.

    Так вроде никто и не гарантировал идентичность работы этих разных серверов.
  • DrPass © (14.10.09 15:08) [10]

    > Deadlock fixer   (14.10.09 12:21) [6]

    > .. А GDS32.DLL? Что с ней делать?

    Класть в каталог программы.

    > Deadlock fixer   (14.10.09 12:29) [7]
    > Может таки можно что-то с транзакциями придумать?

    Апдейт на одной таблице? Завершаются сразу после апдейта? Ну наверное ж заменить no wait на wait...
  • Deadlock fixer (14.10.09 19:00) [11]
    >Не совсем понятно - софт твой или ты его просто настаиваешь/админишь/сопровождаешь?

    Обе программы - мои.

    >Если ты автор - смотри программу: на чем, когда и почему клинит, отлавливай баг и исправляй.

    В первом сообщении указал - падает на updat'ах базы. Почему - не ясно.

    >Или ты хочешь какую то волшебную галочку поставить, что бы не клинило?

    Я бы и рад поправить, но не знаю, что. В параметрах обоих транзакций вроде бы прописано всё верно - но от этого не легче.

    >Так вроде никто и не гарантировал идентичность работы этих разных серверов.

    Я нигде не говорил, что они должны рабоать одинаково (или что ожидаю от них одинаковой работы), хочется сделать так, что бы работало и там и там.
  • Deadlock fixer (14.10.09 20:21) [12]
    >Апдейт на одной таблице?

    Да. (первое сообщение: которые делают update одной и той же таблице).

    >Завершаются сразу после апдейта?

    Да. (первое сообщение: они сразу же закрываются после запроса на апдейт).

    >Класть в каталог программы.

    Спасибо, мысль хорошая.

    >Ну наверное ж заменить no wait на wait...

    Спасибо, попробую.
  • Sergey13 © (15.10.09 08:57) [13]
    > [11] Deadlock fixer   (14.10.09 19:00)
    > В первом сообщении указал - падает на updat'ах базы. Почему - не ясно.
    Ты указал, что
    > Через где-то 4 минуты происходит deadlock
    Если бы через 40 минут нормально было бы?
    Что за апдейты тоже непонятно. TTable.Edit в цикле тоже через Update работает.

    > (записи разные, насколько мне представляется)
    А нам что должно представляться?

    > хочется сделать так, что бы работало и там и там
    А как сделано то?
  • Deadlock fixer (15.10.09 18:00) [14]
    >Если бы через 40 минут нормально было бы?

    Нет.

    >Что за апдейты тоже непонятно

    update some table where some condition. Ничего выдающегося.

    >TTable.Edit в цикле тоже через Update работает.

    Ничего визуального нет.

    >А нам что должно представляться?

    Я уточню этот момент.

    >А как сделано то?

    К базе (через локальные соединения) подключены две программы, которые делают update одной и той же таблице (записи разные, насколько мне представляется).

    Пишущие транзакции короткие - они сразу же закрываются после запроса на апдейт.

    Первый софт, транзакция: read_committed rec_version.
    Второй софт, транзакция: read_committed rec_version nowait.

    Есть еще несколько транзакций, они все read_committed
    rec_version nowait read, и, думаю, на эту проблему не влияют.
  • Sergey13 © (16.10.09 08:50) [15]
    > [14] Deadlock fixer   (15.10.09 18:00)

    Ты можешь хоть стихами ОПИСАТЬ свои программы, хоть красками. Даже клип снять про четвертую минуту.
    А можешь просто привести куски кода на которых происходит блокировка.

    И чем обусловелно применение разных режимов блокировки в разных софтах?
 
Конференция "Базы" » Как исправить ситуацию с тупиками? [D7, IB 7.5]
Есть новые Нет новых   [134435   +33][b:0][p:0.001]