Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2008.04.13;
Скачать: [xml.tar.bz2];

Вниз

Длинные (несколько суток) читающие транзакции в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.008 c
2-1205529536
greg123
2008-03-15 00:18
2008.04.13
Добавление записей и отображение в dbgrid


2-1205762898
Михаил
2008-03-17 17:08
2008.04.13
Компонент для выбора толщины и вида линии


2-1205752151
Dima
2008-03-17 14:09
2008.04.13
Чем заменить listbox


2-1205835608
Podarok
2008-03-18 13:20
2008.04.13
Вызов функций класса


2-1205528631
webSQLNeederr
2008-03-15 00:03
2008.04.13
Нужно что бы OpenDialog выделял папки а не файлы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский