Форум: "Базы";
Текущий архив: 2003.09.15;
Скачать: [xml.tar.bz2];
ВнизКомпонент TIBTransaction, один или больше ? Найти похожие ветки
← →
Andrey V. (2003-08-22 23:09) [0]Я недавно на InterBase и обычно делаю один TIBTransaction.
А тут что-то подумал, поскольку все ibQuery можно (у меня)
условно поделить на две части (1-только читает данные чтоб показать
в гриде,2-это различные INSERTы,UPDATEы и т.п.),может для них сделать
отдельные транзакции, может даже в отдельном потоке (?).
Подскажите, правильный ли это подход ? Если - да , скажите с какими тогда параметрами лучше создавать транзакцию ?
← →
Johnmen (2003-08-23 03:25) [1]Правильный подход - две тр-ии. Одна читающая, другая пишущая, причем пишущая как можно короче.
Двойной клик на IBTransaction и выбирай Read_Committed.
Отдельный поток - в подавляющем большинстве случаев излишен.
← →
MsGuns (2003-08-24 15:27) [2]Где-то читал, что отдельный поток для обращения к тому же серверу - это попытка вторично оплодотворить уже беременную женщину ;))
← →
DrPass (2003-08-24 17:55) [3]>Andrey V.
И при этом подразумевается, что ты не держишь наборы данных открытыми, а транзакции незавершенными, на протяжении всего времени работы программы, а так: считал/закрыл, записал/закрыл и т.д.
← →
MsGuns (2003-08-24 18:28) [4]>DrPass © (24.08.03 17:55) [3]
Что касается "записал-завершил" - понятно, а вот в чем смысл фразы "считал-закрыл" ? А если я даю читающему запросу Open и надо чтоб узер его наблюдал "до бесконечности" (в смысле пока не надоест) ? Чего мне надо закрывать ?
У меня такое впечатление, что я не догнал какой-то укрытый смысл в закрытии "читающих" транзакций.
← →
Zacho (2003-08-25 07:20) [5]
> MsGuns © (24.08.03 18:28) [4]
> У меня такое впечатление, что я не догнал какой-то укрытый
> смысл в закрытии "читающих" транзакций.
На блокировочниках - есть такой смысл, а в IB с транзакциями ReadCommited - действительно нет.
> Andrey V. (22.08.03 23:09)
Сильно рекомендую почитать статьи на http://www.ibase.ru/develop.htm
← →
don-do (2003-08-25 07:33) [6]есть опыт использования 2х тр.
когда одна еще не завершилась, а другая в это время пытается обновить данные получаем deadlock. При работе с кол-вом тр. больше 1 нужно быть осторожным. Есть смысл использовать отдельно читающую тр. для встроенных отчетов.
← →
Andrey V. (2003-08-25 10:08) [7]Так если одна тр. только читает , а другая заимается только INSERT/UPDATE/DELETE вроде дидлока не должно быть ?
Есть еще вопрос, но об этом в следующей месаге...
← →
Zacho (2003-08-25 10:35) [8]
> Andrey V. (25.08.03 10:08) [7]
> Так если одна тр. только читает , а другая заимается только
> INSERT/UPDATE/DELETE вроде дидлока не должно быть
Если с БД только один коннект - да. А если несколько, то почему бы и нет ?
P.S. Еще раз рекомендую прочитать статьи, особенно http://www.ibase.ru/devinfo/ibtrans.htm
← →
don-do (2003-08-25 10:39) [9]>Так если одна тр. только читает , а другая заимается только INSERT/UPDATE/DELETE вроде дидлока не должно быть ?
когда одна еще не завершилась, а другая в это время пытается обновить данные получаем deadlock, это так, но зависит от уровня изоляции.
← →
koks (2003-08-25 16:36) [10]вопрос в продолжение: как грамотно управлять UpdateTransaction в FIBPlus.
С читающей все понятно:
переоткрываем набор:
if SelectQuery.Active then SelectQuery.Close;
if SelectTransaction.InTransaction then SelectTransaction.Commit;
SelectTransaction.StartTransaction;
SelectQuery.Open;
.....
а где и как управлять UpdateTransaction...
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.09.15;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.01 c