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

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.046 c
1-1094806205
Grim
2004-09-10 12:50
2004.09.26
Запись record в строку


3-1093583719
Desperado
2004-08-27 09:15
2004.09.26
ошибка в IBAlloc


4-1092663287
AngelOfDarkness
2004-08-16 17:34
2004.09.26
Программирование Com-порта под WinNT


3-1093939770
Loki3D
2004-08-31 12:09
2004.09.26
как иизбавиться от Alias а?


9-1086199501
Кто-то
2004-06-02 22:05
2004.09.26
Сетевая игра - что использовать?





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