Модераторы: Akella
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Зависшие транзакции Firebird 
:(
    Опции темы
DarkProg
  Дата 27.11.2012, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Законченный романтик
***


Профиль
Группа: Завсегдатай
Сообщений: 1784
Регистрация: 11.3.2009
Где: Земля

Репутация: нет
Всего: 19



Добрый день.
Тема не новая но что-то не выходит решить проблему.
Есть у нас очень капризный клиент, точнее не клиент, а их сеть, у них время от времени лагают куски сети и в результате получаем зависшие транзакции. Как решение придумали показывать номер транзакции с которой происходит самоблокировка и далее уже используя ibexpert удаляем её вручную, но это ж блин издевательство...

Прошу помощи у тех кто хорошо разбирается в данном вопросе, поможет ли мне мониторинг таблицы RDB$TRANSACTIONS, согласно http://firebirdsql.su/doku.php?id=rdb_transactions этой статье здесь указывается является ли транзакция зависшей или нет, но что-то через тот же IBExpert я не смог увидеть там каких-либо изменений.

Транзакции в IBexpert, да и в программе настроены вот так
Код

isc_tpb_read_committed
isc_tpb_rec_version
isc_tpb_nowait


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

Может кто-нибудь подсказать или может носом ткнёт в толковую статью, а то я запросто мог чего и не доглядеть? 


--------------------
"И твоя голова всегда в ответе за то куда сядет твой зад..."

"Я студент - скажите с какого я ВУЗа..."

 smile  smile  smile 
PM MAIL   Вверх
Akella
Дата 28.11.2012, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Цитата(DarkProg @  27.11.2012,  21:39 Найти цитируемый пост)
Прошу помощи у тех кто хорошо разбирается в данном вопросе, 

тогда тебе на sql.ru или ibase.ru  smile 
PM MAIL   Вверх
DarkProg
Дата 28.11.2012, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Законченный романтик
***


Профиль
Группа: Завсегдатай
Сообщений: 1784
Регистрация: 11.3.2009
Где: Земля

Репутация: нет
Всего: 19



Цитата(Akella @  28.11.2012,  14:58 Найти цитируемый пост)
тогда тебе на sql.ru или ibase.ru

Так не честно  smile 


--------------------
"И твоя голова всегда в ответе за то куда сядет твой зад..."

"Я студент - скажите с какого я ВУЗа..."

 smile  smile  smile 
PM MAIL   Вверх
Akella
Дата 28.11.2012, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Цитата(DarkProg @  27.11.2012,  21:39 Найти цитируемый пост)
Транзакции в IBexpert, да и в программе настроены вот так


это пишущие или читающие?
PM MAIL   Вверх
DarkProg
Дата 28.11.2012, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Законченный романтик
***


Профиль
Группа: Завсегдатай
Сообщений: 1784
Регистрация: 11.3.2009
Где: Земля

Репутация: нет
Всего: 19



И те и другие. Я по сути не делю транзакции на пишущие и читающие, хотя есть отдельные только для чтения, но таких единицы.


--------------------
"И твоя голова всегда в ответе за то куда сядет твой зад..."

"Я студент - скажите с какого я ВУЗа..."

 smile  smile  smile 
PM MAIL   Вверх
DarkProg
Дата 28.11.2012, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Законченный романтик
***


Профиль
Группа: Завсегдатай
Сообщений: 1784
Регистрация: 11.3.2009
Где: Земля

Репутация: нет
Всего: 19



Кстати по ходу уточнение/дополнение.

Насколько мне будут страшны  зависшие транзакции, если я использую метод оптимистичного блокирования? Т.е. по сути ранее я использовал пессимистичное блокирование. Теперь же у меня появился свой механизм блокировок(спец табличка) который позволяет точно определить пользователя который сейчас работает с конкретной записью. И блокировочный механизм компонентов доступа я переключил в оптимистичный вариант.


--------------------
"И твоя голова всегда в ответе за то куда сядет твой зад..."

"Я студент - скажите с какого я ВУЗа..."

 smile  smile  smile 
PM MAIL   Вверх
Akella
Дата 28.11.2012, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Мне кажется твоя проблема изначально в неправильном дизайне приложения.
Пишущая транзакция должна быть максимально короткой по времени.
А так получается:
- пользователь вызвал форму редактирования и ушел чай пить, при этом открыта пишущая транзакция и запись заблокирована
- обрыв связи...


а должно быть реализовано так, что при открытой форме редактирования не должна запускаться пишущая транзакция, её нужно открывать только непосредственно перед сохранением записи

Добавлено через 1 минуту и 38 секунд
ты пока что не рассказал, что там у тебя да как
по идее зависших транзакций вообще не должно быть
или ты выполняешь Update with lock?

Добавлено через 2 минуты и 36 секунд
а это читал?
http://ibase.ru/devinfo/keepalive.htm
PM MAIL   Вверх
DarkProg
Дата 29.11.2012, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Законченный романтик
***


Профиль
Группа: Завсегдатай
Сообщений: 1784
Регистрация: 11.3.2009
Где: Земля

Репутация: нет
Всего: 19



Цитата(Akella @  29.11.2012,  00:01 Найти цитируемый пост)
а это читал?
http://ibase.ru/devinfo/keepalive.htm 

Да, такой трюк пробовал, но что-то не пошло.

Цитата(Akella @  29.11.2012,  00:01 Найти цитируемый пост)
ты пока что не рассказал, что там у тебя да как
по идее зависших транзакций вообще не должно быть
или ты выполняешь Update with lock?

Нет у меня Select with Lock, если я правильно понимаю.
Ну во всяком случае так было раньше. Сейчас блокировки нет или во всяком случае быть не должно(где-то могло остаться пессимистичное блокирование).

Сейчас делается попытка перевести если не весь проект, то хотя бы большую часть по следующему принципу:
1) Пользователь прочитал данные.
2) Завершаем транзакцию.
3) Пользователь нажимает Сохранить и тогда запускается пишущая транзакция, и делается изменение данных.


Цитата(Akella @  29.11.2012,  00:01 Найти цитируемый пост)
а должно быть реализовано так, что при открытой форме редактирования не должна запускаться пишущая транзакция, её нужно открывать только непосредственно перед сохранением записи

Хм... я чувствовал что где-то что-то не так сделано, ладно попробую реализовать так. Пока не шибко понимаю как именно это будет работать.


--------------------
"И твоя голова всегда в ответе за то куда сядет твой зад..."

"Я студент - скажите с какого я ВУЗа..."

 smile  smile  smile 
PM MAIL   Вверх
Akella
Дата 29.11.2012, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Цитата(DarkProg @  29.11.2012,  09:44 Найти цитируемый пост)
1) Пользователь прочитал данные.
2) Завершаем транзакцию.


Чтающие транзакции (ReadOnly) могут быть открыты сколь угодно долго. Зачем их завершать?

Добавлено @ 11:26
Цитата(DarkProg @  29.11.2012,  09:44 Найти цитируемый пост)
Хм... я чувствовал что где-то что-то не так сделано, ладно попробую реализовать так. Пока не шибко понимаю как именно это будет работать.

А что сложного в том, что пишущую транзакцию нужно открывать непосредственно перед сохранением?
В FibPlus это вообще всё почти на полноv автомате. Даже транзакциями управлять не нужно.

Логика примерно такая:
- FibDataSet.Edit;
- указать значения полей;
- FibDataSet.POST;

всё smile
PM MAIL   Вверх
DarkProg
Дата 29.11.2012, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Законченный романтик
***


Профиль
Группа: Завсегдатай
Сообщений: 1784
Регистрация: 11.3.2009
Где: Земля

Репутация: нет
Всего: 19



Цитата(Akella @  29.11.2012,  12:21 Найти цитируемый пост)
 Зачем их завершать?

Ну там фактически получается что-то вроде отключения от БД. Пока пользователь там что-то чухает можно спокойно его отключить и меньше трафика по сети гуляет smile

Так как проектов несколько, есть и на других СУБД было решено отказаться от FIBPlus, сейчас работаю с AnyDAC, получается универсальная платформа которую надо затачивать под конкретную СУБД чуть-чуть буквально.

А проблема транзакций тянется ещё со времён динозавров, которую между делом думаю решить.


Кстати AnyDAC работают куда шустрее, чем FIB... Хотя у первых есть отдельные недоработки, но у них и поддержка куда шустрее.


--------------------
"И твоя голова всегда в ответе за то куда сядет твой зад..."

"Я студент - скажите с какого я ВУЗа..."

 smile  smile  smile 
PM MAIL   Вверх
Akella
Дата 7.12.2012, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Interbase"
Alex

Обязательно указание:

1. Версию InterBase (Firebird, Yaffil)

2. Способа доступа (ADO, BDE, IBX и т.д.)

  • КАК ПРАВИЛЬНО ОФОРМИТЬ КОД - ЗДЕСЬ
  • КАК ПРАВИЛЬНО УКАЗАТЬ ТЕКСТ ОШИБКИ - ЗДЕСЬ
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • FAQ раздела лежит здесь!

Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Firebird, Interbase | Следующая тема »


 




[ Время генерации скрипта: 0.0520 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.