Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2012.02.26;
Скачать: CL | DM;

Вниз

Firebird+многопоточность   Найти похожие ветки 

 
Kobylyansky   (2010-04-23 11:41) [0]

Если я в каждом потоке использую два TiBquery которые создаю в runtime тогда мне для каждого TiBquery нада создавать отдельную TIbDataBase и TIbTransaction, или TIbDataBase - одну для обоих TiBquery, а TIbTransaction - для каждого разную??? И для чего в TiBquery свойство Tranzaction, если транзакция есть в TIBDataBase??


 
turbouser ©   (2010-04-23 11:57) [1]


> Kobylyansky   (23.04.10 11:41)  


> нада создавать отдельную TIbDataBase

нинада отдельную.

> TIbTransaction - для каждого разную???

Если TiBquery только для чтения данных - достаточно одной readonly транзакции для всех. Если read/write - то лучше отдельные.


 
turbouser ©   (2010-04-23 11:59) [2]

см.
http://ibase.ru/devinfo/ibx.htm
да и вообще - http://ibase.ru/


 
Loginov Dmitry ©   (2010-04-24 00:20) [3]

Добавлю лишь следующее:
- одновременно работать с одним подключением из нескольких потоков - недопустимо.
- динамическое подключение к БД (и отключение) через TIbDataBase.Connected := True / False ОБЯЗАТЕЛЬНО должно быть защищено с помощью критической секции (либо (что хуже) с помощью других способов синхронизации).
- не обязательно для каждого подключения создавать TIbDataBase. Можно использовать пул подключений.
- при этом не нужно держать подключения долгое время. Только на время выполнения требуемого запроса.


 
turbouser ©   (2010-04-24 00:22) [4]


> Loginov Dmitry ©   (24.04.10 00:20) [3]


> - одновременно работать с одним подключением из нескольких
> потоков - недопустимо.

Вполне допустимо.. Косяков не было.. Хотя, давно это было.. :(


 
Loginov Dmitry ©   (2010-04-24 00:27) [5]


> Вполне допустимо.. Косяков не было.. Хотя, давно это было.
> .


Вам просто повезло. Косяки были, есть и будут.
Сами IBX-ные компоненты не рассчитаны на такой режим работы.


 
turbouser ©   (2010-04-24 00:32) [6]


> Loginov Dmitry ©   (24.04.10 00:27) [5]

Наверное я что-то неправильно делал :)


 
Loginov Dmitry ©   (2010-04-24 08:17) [7]


> Наверное я что-то неправильно делал :)


Наверное.
На 1-м ядре прога годами может работать безо всяких ошибок.
Интересное начинается, когда начинаешь тестировать это добро на многоядерном.


 
Loginov Dmitry ©   (2010-04-24 12:05) [8]

И еще:
Библиотека IBX, идущая в составе D7, не рассчитана на многопоточность.

Необходимо ее обновить до версии 7.11. Скачать можно с www.ibase.ru


 
Дмитрий Белькевич   (2010-04-25 11:57) [9]


>  при этом не нужно держать подключения долгое время. Только
> на время выполнения требуемого запроса.


Еще интересное. Замечено, что когда коннекты подключены, из параллельного потока, долго (недели), то, после некоторого момента, по непонятной причине скорость выполнения запросов начинает сильно (иногда - на порядок) падать.

Причём после перезагрузки приложения скорость восстанавливается. Есть подозрение, что проблема именно в том, что коннекты долго открыты.

IBX 7.11, D7, FB 2.0.1.


 
Anatoly Podgoretsky ©   (2010-04-26 08:48) [10]

> Loginov Dmitry  (24.04.2010 00:20:03)  [3]

То есть на компьютере можно запускать только одну программу.


 
Loginov Dmitry ©   (2010-04-26 11:25) [11]


> То есть на компьютере можно запускать только одну программу.


Зачем?
Сколько угодно.


 
Anatoly Podgoretsky ©   (2010-04-26 12:14) [12]

> Loginov Dmitry  (26.04.2010 11:25:11)  [11]

Так каждая программа, это как минимум один поток. А в разных потоках нельзя использовать FireBird согласно утверждениям в обсуждение. Я естественно в подобное не верю, даже в рамках одной программ, поскольку это дурдом.


 
Loginov Dmitry ©   (2010-04-26 21:37) [13]


> А в разных потоках нельзя использовать FireBird согласно
> утверждениям в обсуждение. Я естественно в подобное не верю,
>  даже в рамках одной программ, поскольку это дурдом.


Анатолий, перечитайте ветку еще разок.


 
Игорь Шевченко ©   (2010-04-27 00:36) [14]

А с ораклом можно...Клиент позволяет. Может у FB тоже клиент умеет ?


 
MsGuns ©   (2010-04-27 11:33) [15]

>Loginov Dmitry ©   (24.04.10 00:20) [3]
>- одновременно работать с одним подключением из нескольких потоков - недопустимо.

Недопустимо с точки зрения кривости чего, сервера или клиента ?
Каким боком сервер узнаЁт, что два запроса, поступающие от одного коннекта, выполняются на клиенте в разных потоках, и даже если узнает, какие проблемы этот факт у него вызывает ?

Если вопросы покажутся "ламерскими" на всякий случай внесу ясность - с птицей работал давно


 
Loginov Dmitry ©   (2010-04-27 12:16) [16]


> Недопустимо с точки зрения кривости чего, сервера или клиента
> ?


Сервер здесь не причем.
Ограничения связаны с реализацией IBX.

В принципе, все стандартные компоненты, наследуемые от TCustomConnection, страдают той же болезнью (в меньшей степени страдает TDataBase).



Страницы: 1 вся ветка

Текущий архив: 2012.02.26;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.011 c
15-1320674537
mvconf
2011-11-07 17:02
2012.02.26
Разработка системы видеоконференцсвязи


3-1272096564
Ulugbek
2010-04-24 12:09
2012.02.26
Возможно ли восстановить записи после Delete? После Delete и Comm


15-1320770585
TUser
2011-11-08 19:43
2012.02.26
Скорость обучения перлу


15-1320480875
wl
2011-11-05 11:14
2012.02.26
Предложения по улучшению работы форума


2-1321451267
Scott Storch
2011-11-16 17:47
2012.02.26
Библиотека типов (COM)