Форум: "Базы";
Текущий архив: 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