Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
14-48691
Igor__
2003-08-25 17:52
2003.09.15
Подключение двух ПК через модем


1-48507
Suric
2003-09-01 18:40
2003.09.15
Как подключить к Delphi- проекту библиотеку *.Lib ?


3-48427
SiJack
2003-08-25 16:07
2003.09.15
Как сделать чтобы в DBGridEh при нажатии кнопки


6-48680
AlexT1000
2003-07-14 11:24
2003.09.15
Внедрение в IE ( п отипу Reget)


3-48442
dmtr
2003-08-25 10:23
2003.09.15
Программное создание таблицы dBASE 4





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