|
3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
|
|||
---|---|---|---|
#18+
Можно ли в 3.0 делать параллельные вызовы API из разных потоков, использующих 1-о соединение? Раньше в Embedded 2.5 это работало, а теперь в 3.0 это приводит к бесконечному зависанию при вызове isc_dsql_prepare. В некоторых случая и к Access Violation в Engine12.dll. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2016, 14:13 |
|
3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
|
|||
---|---|---|---|
#18+
rashid.abzalov, никогда это не работало. один поток - одно подключение ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2016, 14:15 |
|
3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
|
|||
---|---|---|---|
#18+
Т.е. о чем здесь говорилось поломали? kdvВ 2.5 паоявилась только синхронизация вызовов API, которая в результате дает стабильную работу клиента, даже если приложение пытается выполнять вызовы API для одного коннекта из разных тредов. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2016, 14:17 |
|
3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
|
|||
---|---|---|---|
#18+
pastor, В 2.5 это работало как с Embedded так и через TCP/IP. Сейчас в 3.0 с Embedded не работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2016, 14:20 |
|
3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
|
|||
---|---|---|---|
#18+
rashid.abzalov, ты что-то путаешь. В 3.0 без изменения конфига Embedded работает как SS, в 2.5 - SC. Поэтому подключение к одной и той же БД из разных процессов (программ) в 3.0 без изменения конфига не возможен, ибо файл БД открывается в эксклюзивном режиме. Надеюсь ты это имел ввиду? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2016, 14:21 |
|
3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
|
|||
---|---|---|---|
#18+
rashid.abzalovpastor, В 2.5 это работало как с Embedded так и через TCP/IP. Сейчас в 3.0 с Embedded не работает. ну допустим. Что с того, даже если так можно делать в 2.5, то это не обозначает что нужно. Профита от этого 0, потому как параллельно всё равно в одном коннекте ничего работать не будет. Если хочешь чтобы исправили, то делай воспроизводимый пример того что работало в 2.5 и перестало в 3.0 и в трекер. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2016, 14:25 |
|
3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
|
|||
---|---|---|---|
#18+
Симонов Денис, Это понятно, спасибо. Но вопрос касался использования 1-го коннекта из разных потоков. Тестировал на установленном Classic, при подключении без указания протокола, т.е. использовался embedded (engine12). ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2016, 14:25 |
|
3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
|
|||
---|---|---|---|
#18+
rashid.abzalovТ.е. о чем здесь говорилось поломали? нет. Это стало как дверь в одноместный сортир. Раньше двери не было. Но все равно в таком сортире сидеть может только один. Собственно, параллельного выполнения операций в одном коннекте нет практически ни в одной СУБД, потому что это нафиг никому не надо (или не реализуется из-за особенностей транспорта в коннекте). Игрища с параллельным доступом в одном коннекте интересны разве что с точки зрения повышения собственного уровня, но не более того. Эти операции все равно остаются сериализованными, т.е. никакой параллельности в одном коннекте не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2016, 14:33 |
|
3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
|
|||
---|---|---|---|
#18+
kdvСобственно, параллельного выполнения операций в одном коннекте нет практически ни в одной СУБД Никто не говорит о параллельном выполнении (в Oracle, кстати это работает). Пусть они выполняются последовательно, но с синхронизацией на уровне fbclient.dll. Речь о проблеме зависания всех потоков, использующих 1 коннект. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2016, 14:41 |
|
3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
|
|||
---|---|---|---|
#18+
rashid.abzalov, тесткейс и в трекер ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2016, 14:43 |
|
3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
|
|||
---|---|---|---|
#18+
rashid.abzalovо параллельном выполнении (в Oracle, кстати это работает) именно работает, в одном коннекте? хотелось бы подтверждения, ссылкой на доку Оракла. Я там такого пока не нашел. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2016, 15:07 |
|
3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
|
|||
---|---|---|---|
#18+
kdvименно работает, в одном коннекте? Так же как и в Firebird: полная сериализация вызовов API. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2016, 15:12 |
|
3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, rashid.abzalov утверждает, что прям параллельно из тредов в одном коннекте все работает. Я может не те ключевые слова использую, но ... а, вот, нашел, по 10g https://docs.oracle.com/cd/B19306_01/appdev.102/b14250/oci09adv.htm Once spawned, threads run asynchronously with respect to one another. They can access common data elements and make OCI calls in any order. Because of this shared access to data elements, a synchronized mechanism is required to maintain the integrity of data being accessed . The mechanism to manage data access takes the form of mutexes (mutual exclusivity locks), that is implemented to ensure that no conflicts arise between multiple threads accessing shared internal data that are opaque to users. In OCI, mutexes are granted for each environment handle. Собственно, не вижу никакой параллельности. Кстати, в доке на 12g уже по другому написано http://docs.oracle.com/database/121/LNOCI/oci08sca.htm#LNOCI16587 но тем не менее Implementing Thread Safety Pass a value of OCI_ENV_NO_MUTEX for the mode of OCIEnvNlsCreate(). The application must set mutual exclusion locks (mutex) for OCI calls made on the same environment handle. This has the advantage that the mutex scheme can be optimized to the application design. The programmer must also ensure that only one OCI call is in process on the environment handle connection at any given time. Pass a value of OCI_DEFAULT for the mode of OCIEnvNlsCreate(). The OCI library automatically gets a mutex on every OCI call on the same environment handle. т.е. один хрен - по умолчанию синхронизация через мютексы, или человек сам должен эту синхронизацию делать. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2016, 15:23 |
|
3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
|
|||
---|---|---|---|
#18+
kdv, Да, значит я ошибался ... The bulk of processing of an OCI call happens on the server, so if two threads using OCI calls go to the same connection, then one them could be blocked while the other finishes processing at the server. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2016, 15:29 |
|
3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
|
|||
---|---|---|---|
#18+
kdvт.е. один хрен - по умолчанию синхронизация через мютексы, или человек сам должен эту синхронизацию делать. Ну так я так и сказал. Единственное отличие от Firebird это добровольная возможность отключить внутреннюю синхронизацию в пользу своей собственной. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2016, 15:48 |
|
3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
|
|||
---|---|---|---|
#18+
rashid.abzalovТ.е. о чем здесь говорилось поломали? kdvВ 2.5 паоявилась только синхронизация вызовов API, которая в результате дает стабильную работу клиента, даже если приложение пытается выполнять вызовы API для одного коннекта из разных тредов. был ньюанс с созданием подключения из разных потоков. у нас в исходниках был свой мьютекс, в фибах свой, с 2.5 появился в fbclient. работа с данными всегда была однопоточной. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2016, 15:59 |
|
3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
|
|||
---|---|---|---|
#18+
Оправил в трекер . ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2016, 11:29 |
|
3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
|
|||
---|---|---|---|
#18+
rashid.abzalov, один уточняющий вопрос. А у тебя сервис 3.0 при этом запущен? Потому как с 2.5 тут сравнивать немного не корректно. Там embedded отдельный дистрибутив. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2016, 13:27 |
|
3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
|
|||
---|---|---|---|
#18+
Симонов ДенисА у тебя сервис 3.0 при этом запущен? - В примере из трекера - без установленного сервера, приложение лежит рядом с распакованным "Zip kit for manual/custom installs". Считай embedded. - В примере из изначального сообщения этой ветки - с установленным сервером, но при подключении в режиме embedded. Так, что никакой разницы нет. Симонов ДенисПотому как с 2.5 тут сравнивать немного не корректно. Там embedded отдельный дистрибутив. В свете использования "Zip kit for manual/custom installs" - думаю, что корректно. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2016, 14:39 |
|
3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
|
|||
---|---|---|---|
#18+
rashid.abzalov, да нет. Как раз таки не совсем. Дело в том что как только к твоей БД подключится что-то через нормальный SS сервер, то через embedded к той же БД уже не подрубиться. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2016, 15:04 |
|
3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
|
|||
---|---|---|---|
#18+
Симонов ДенисДело в том что как только к твоей БД подключится что-то через нормальный SS сервер, то через embedded к той же БД уже не подрубиться. Да, это известно и хорошо описано в документации. И это еще один аргумент в пользу бессмысленного использования Embedded сервера одновременно с полноценно установленным. Но не понял, как ваше замечание соотноситься с изначальной проблемой? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2016, 15:41 |
|
3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
|
|||
---|---|---|---|
#18+
rashid.abzalov, Коннект-то 1, а потоков использующих его много. Так, что зависание из-за невозможности подсоединится 2-м коннектом - исключается. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2016, 15:46 |
|
3.0 Embedded (Engine12) thread safe в рамках 1-го коннекта?
|
|||
---|---|---|---|
#18+
rashid.abzalov, погаси сервис и проверь ещё раз ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2016, 15:49 |
|
|
start [/forum/topic.php?fid=40&msg=39319637&tid=1561943]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
40ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 147ms |
0 / 0 |