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

Вниз

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

Наверх





Память: 0.48 MB
Время: 0.004 c
2-1321616574
alex-2011h
2011-11-18 15:42
2012.02.26
DBGrid и ScrollBar


2-1321130980
Евгений07
2011-11-13 00:49
2012.02.26
INDY сбивают ориентацию ADO


15-1320599461
KilkennyCat
2011-11-06 20:11
2012.02.26
Как пользоваться дебаггером


2-1321092811
nick_delphi2010
2011-11-12 14:13
2012.02.26
Проблема с дебагером в Delphi 2010


15-1320784202
Юрий
2011-11-08 23:30
2012.02.26
С днем рождения ! 9 ноября 2011 среда





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