![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подскажите насчет транзакций??? [D5, D6, IB6.x, Firebird]
Sirus © (2004-09-14 11:40:00)Привет Мастера...
Подскажите, плиизз, что лучше:
1. Создавать для каждой TQuery отдельную TTransaction или для нескольких TQuery одна TTransaction???
2. После выполнения нескольких SELECT что лучше - ROLLBACK или COMMIT???
DSKalugin (2004-09-14 14:46:00) [1]Двумя словами не объясниш. Читать надо. Причем долго и вдумчиво
Транзакции в InterBase
http://ibase.ru/devinfo/ibtrans.htm
Транзакции, многоверсионность записей, сборка мусора и т.п.
http://ibase.ru/devinfo/oitoat.htm
Управление транзакциями в IBExpress (IBX)
http://ibase.ru/devinfo/ibxtrans.htm
Digitman (2004-09-14 12:06:00) [2]
> Sirus (14.09.04 11:52) [5]
> Приложение использует DLL
на здоровье
> Что лучше??? делать одно соединение с базой из основного
> приложения, а из DLL использовать это соединение???
можно и одно соединение использовать, можно и несколько ... опять же - все зависит от сквозной логики
> Формы из DLL вызываются немодально
а формы-то здесь причем ?
> ROLLBACK перепроверяет там что-то на предмет изменений?
механизм работы отката в IB тесно связан с механизмом т.н. "уборки мусора" (garbage collection) .. подробней о концепции и логике GC можно почитать, например, в статьях на ibase.ru
Sirus (2004-09-14 11:59:00) [3]>> Digitman © (14.09.04 11:50) [4]
У меня после великого множества всяких там SELECT'ов в случае с ROLLBACK транзакция завершается достаточно долгое время, по сравнению с COMMIT... Вот я и получается впечатление: что, может COMMIT просто плюет на транзакцию, в случае если там не было изменений, а ROLLBACK перепроверяет там что-то на предмет изменений??? (уффф... аж башка закружилась...)
Sirus (2004-09-14 11:52:00) [4]И еще вопрос:
Приложение использует DLL...
Что лучше??? делать одно соединение с базой из основного приложения, а из DLL использовать это соединение???
Или делать для каждого DLL отдельное соединение???
Формы из DLL вызываются немодально...
Sirus (2004-09-14 11:50:00) [5]>> Alex_Bredin © (14.09.04 11:47) [2]
>> сначала роллбэк потом коммит
Это что???
Digitman (2004-09-14 11:50:00) [6]
> 1. Создавать для каждой TQuery отдельную TTransaction или
> для нескольких TQuery одна TTransaction???
есть понятия "читающая транзакция" и "модифицирующая транзакция"
отсюда и пляши : селективные запросы зачастую можно ассоциировать с одной и той же читающейтранзакцией, модифицирующие же запросы - с модифицирующей транзакцией ... но это не строго, все зависит от конкретно реализуемой логикой - иной раз требуется и отдельная транзакция на отдельный запрос
> 2. После выполнения нескольких SELECT что лучше - ROLLBACK
> или COMMIT???
на первый взгляд это безразлично : если в данной транзакции не было произведено никаких изменений в базе (т.е. в ее контексте исполнялись только селективные запросы, один или более), то и COMMIT и ROLLBACK приведут к одному и тому же видимому на стороне клиента рез-ту - закрытию наборов данных, полученных в контексте транзакции
Alex_Bredin (2004-09-14 11:47:00) [7]сначала роллбэк потом коммит
sniknik (2004-09-14 11:43:00) [8]> 2. После выполнения нескольких SELECT что лучше - ROLLBACK или COMMIT???
;о)))
всегда, слышиш всегда! лучше ROLLBACK. (для тебя..., не испортиш ничего)