Главная страница
    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.47 MB
Время: 0.038 c
14-1094447251
Layner
2004-09-06 09:07
2004.09.26
Японский отряд 731


14-1094377822
Baron
2004-09-05 13:50
2004.09.26
Кто играл на деньги


4-1092327296
Константинов
2004-08-12 20:14
2004.09.26
Как вкл/выкл автоповтор символов при удержании клавиши клавиатуры


11-1080312842
Raki
2004-03-26 17:54
2004.09.26
MHMonthCalendar 0.3


6-1090301549
Eagle
2004-07-20 09:32
2004.09.26
Socket PORT





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский