Текущий архив: 2008.04.13;
Скачать: 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 вся ветка
Текущий архив: 2008.04.13;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.017 c