Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.26;
Скачать: CL | DM;

Вниз

TIBTransaction и MIDAS   Найти похожие ветки 

 
Desperado ©   (2004-08-25 08:26) [0]

В хелпе про TIBTransaction есть такой интересный NOTE:

"In Midas applications, every query must be in its own transaction.  You must use one transaction component for each query component."

Кто-нибудь знает, почему надо к каждому query прикреплять собственную транзакцию? Чем это вызвано?


 
stud ©   (2004-08-25 09:16) [1]

не обязательно. главное чтобы компонент был привязан хотябы к одной транзакции. можно иметь один компонент транзакции для всех компонентов


 
stud ©   (2004-08-25 09:26) [2]

пардон, спутал с прямым углом))


 
Desperado ©   (2004-08-25 09:53) [3]

>пардон, спутал с прямым углом))
чего????
т.е. то что ты сказал не верно?


 
Romkin ©   (2004-08-25 10:14) [4]

По моему мнению, немного не точно: скорее, у каждого провайдера должна быть своя транзакция. И все TIBQuery этого провайдера цепляются к ней, а их модет ведь быть не одна, когда делается связка мастер-деталь.
Дело в том, что TDatasetProvider пытается сам управлять своими транзакциями.


 
Desperado ©   (2004-08-25 10:18) [5]

Есть еще варианты истолкования данного хелпа?


 
Romkin ©   (2004-08-25 10:39) [6]

Почему тебя это так волнует? :)
TIBTransaction предназначена именно для того, чтобы каждый блок работал в своей транзакции, практически это и написано.


 
Desperado ©   (2004-08-25 10:44) [7]

Потому что мне намного удобнее использовать один компонент транзакции с несколькими query. Это существенно упрощает разработку. Но этот note в хэлпе меня немного пугает.


 
Romkin ©   (2004-08-25 10:56) [8]

Так ты МИДАС строишь?
http://rsdn.ru/article/db/midas.xml
Посмотри, как там сделано. Статья написана на D5, в IBX D6 у транзакции появилось свойство AutoStopAction, его обычно в saCommit надо ставить, все будет работать. И еще посмотреть примечание насчет TIBSQL ;)
Учитывать надо только одно: провайдер при общении с сервером открывает транзакцию, если она была закрыта. И если он ее открыл - то по окончании закрывает. Если открывал не он - она останется открытой :)


 
Romkin ©   (2004-08-25 11:09) [9]

В общем случае, сервер приложений предназначен для общения с OLTP системами: ни одна из них не любит длительных транзакций. Поэтому стремиться надо к следующей схеме: открыли транзакцию, взяли или изменили быстро данные, и закрыли ее. Провайдер старается делать именно так.
Поэтому ставь на главную форму сервера TIBSQLMonitor и отслеживай транзакции и запросы. Во-первых, многое станет понятно, во-вторых, когда видишь открытие транзакции, проход данных и сразу hard commit - все в порядке, транзакция подтверждена.
Другой вопрос в том, что у Interbase 6.5 и выше и у Firebird транзакция read read_committed не нагружает сервер, и может быть открыта сколько угодно долго. В этом случае можно ставить у cds PacketRecords положительным, в остальных случаях я бы не рекомендовал, провайдер держит транзакцию до окончания фетча ;)


 
Desperado ©   (2004-08-25 14:28) [10]

Спасибо за совет.
Статья помогла.
Таких коротких транзакций, к сожалению не получится...
Логика приложения такая :)


 
Romkin ©   (2004-08-25 14:30) [11]

Ерунда: Смотри сам, там на сервере приложений открываются таблицы и висят. Транзакций нет. А когда все сделал - тогда все и идет в БД, в одной транзакции.


 
Desperado ©   (2004-08-25 16:07) [12]

Я уже так и буду делать.
Все изменения хранить в кеше, а потом одной секундной транзакцией
все залью в БД.
Правда кода перелопачивать уйму придется :(
Кстати, транзакция будет не одна. Несколько, но одновременно.
Т.к. Датасетов несколько.


 
Desdechado ©   (2004-08-26 10:48) [13]

Ну, одна или не одна, это от логики зависит, а не от количества датасетов.
Транзакция - это набор изменений, который должен выполниться целиком или не выполниться вовсе.



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

Текущий архив: 2004.09.26;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.027 c
14-1094378919
Voland
2004-09-05 14:08
2004.09.26
как отключить explorer в винХР


3-1093605024
Zhekson
2004-08-27 15:10
2004.09.26
потеря информации


14-1094399846
Igorek
2004-09-05 19:57
2004.09.26
Сможем ли мы когда-нибуть увидеть Большой Взрыв и другие космосы?


14-1094193758
Ренат
2004-09-03 10:42
2004.09.26
Сообщения в SIM


3-1093660094
mr.dfox
2004-08-28 06:28
2004.09.26
Ввод времени в DBGrid.