Вниз
Скачать: CL | DM;

Длинные (несколько суток) читающие транзакции в FB. Как лучше ?   Найти похожие ветки 

← →
ari_9   (2007-11-20 19:26) [0]

FireBird 1.5.4, Delphi 2005, FIBPlus 6.7

В приложении есть несколько запросов, постоянно
читающих из базы данных данные. Эти запросы обновляются по определенным условиям - накоплению некоторого числа эвентов от БД или таймеру - в среднем один раз в несколько секунд. Запросы открыты в читающей транзакции с параметрами read, nowait, rec_version, read_committed, время жизни - до 3-5 суток

Запросы в компонентах pFIBDataSet, свойство AutoCommit = False (по умолчанию)

Имеет ли смысл принудительно через какое-то время или количество выполненных запросов закрывать и снова стартовать транзакции ? Вообще есть какие-то особенные принципы работы с такими транзакциями или не заморачиваться ?


← →
Johnmen ©   (2007-11-20 20:03) [1]


> Имеет ли смысл принудительно через какое-то время или количество
> выполненных запросов закрывать и снова стартовать транзакции ?

Нет.

>  Вообще есть какие-то особенные принципы работы с такими
> транзакциями или не заморачиваться ?

Не заморачивайся.


← →
ari_9   (2007-11-20 21:46) [2]

Johnmen

ок, спасибо


← →
Виталий Панасенко(дом)   (2007-11-20 22:00) [3]


> Запросы в компонентах pFIBDataSet, свойство AutoCommit =
> False (по умолчанию)

Вообще-то, это свойство используют при наличии ДВУХ транзакций - длинной читающей и короткой пишущей.. вот для пишущей и нужно AutoCommit=TRUE


← →
stud ©   (2007-11-21 12:12) [4]

Виталий Панасенко(дом)   (20.11.07 22:00) [3]
вот для пишущей и нужно AutoCommit=TRUE


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


← →
Andrey ©   (2007-11-21 12:25) [5]

>есть какие-то особенные принципы работы с такими транзакциями
С такими нет. Если бы они писали, или хотя бы были репитбл_рид, тогда ты бы уже обнаружил "необоснованый" рост базы. А так всё ок.


← →
Johnmen ©   (2007-11-21 12:53) [6]


> Andrey ©   (21.11.07 12:25) [5]

репитбл_рид не поддерживается, можно не обращать внимания...


← →
Andrey ©   (2007-11-21 12:59) [7]

>Johnmen ©   (21.11.07 12:53) [6]
>репитбл_рид не поддерживается, можно не обращать внимания...
эм...
"SNAPSHOT (константа concurrency) - уровень изоляции, эквивалентный Repeatable Read" (це) http://ibase.ru/devinfo/ibtrans.htm
или я опять промахнулся термином? )


← →
Johnmen ©   (2007-11-21 13:08) [8]


> Andrey ©   (21.11.07 12:59) [7]

Я взлюкнул :)
Конечно же snapshot.


← →
Виталий Панасенко(дом)   (2007-11-21 13:51) [9]


> stud ©   (21.11.07 12:12) [4]
>
> Виталий Панасенко(дом)   (20.11.07 22:00) [3]
> вот для пишущей и нужно AutoCommit=TRUE
>
> зло это. надо явно самому управлять пишущими транзакциями,
>  чтобы потом не удивляться...

Это позволяет избежать dead-lock(не знаю, на все 100 или нет, но очень существенно).. А с дуру можно и х.. поломать.. Не смотря на то, что это гидравлика..:-)


← →
Andrey ©   (2007-11-21 13:59) [10]

>Виталий Панасенко(дом)
>Это позволяет избежать dead-lock
ну... скажем это один из механизмов, который косвенно уменьшает его вероятность. но не более.
на 100% можно избавится от дедлоков только применяя SNAPSHOT TABLE STABILITY с резервированием таблиц при старте транзакции, но очень мало кто использует этот уровень изоляции... очевидно в следствии того, что он не выставлен как умолчательный )))



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.01 c
2-1205835608
Podarok
2008-03-18 13:20
2008.04.13
Вызов функций класса


15-1204184372
Kerk
2008-02-28 10:39
2008.04.13
Прекрасное далёко...


8-1178543822
Veter
2007-05-07 17:17
2008.04.13
Геометрические фигуры


15-1204017202
Правильный_Вася
2008-02-26 12:13
2008.04.13
FireBird - альтернатива


2-1205944504
vegarulez
2008-03-19 19:35
2008.04.13
Вопрос про передачу UDP инди 10.




   Наверх