|
|
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
Коллеги, есть задача в разных тредах асинхронно работать с одним и тем же оракловым Connection. Как это грамотно реализовать, есть у кого нибудь опыт ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2012, 17:58:02 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
JDBC по природе своей не многопоточный. Поэтому вариантов всего два. Либо синхронизировать все потоки по одному локу. Либо складывать все задачи в очередь и разгребать одним потоком для запуска SQL. Если есть какая-то конкретика про используемые SQL, то можно ещё что-то придумать. Например не использовать ResultSet с открытым курсором, а вычитывать данные в CachedRowSet и сразу же освобождать Connection. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2012, 18:03:06 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
buldozer01Коллеги, есть задача в разных тредах асинхронно работать с одним и тем же оракловым Connection. Как это грамотно реализовать, есть у кого нибудь опыт ? Ну сначала стандартный вопрос - зачем вам это? Скорее всего вы изобретаете велосипед и наступаете на пройденные многими грабли. Если же действительно есть такая необходимость - то в кратце Connection не ThreadSafe, так что можно разве что создать фасад над коннекшенами в который складывать коннекшены по ключу, а перед каждым доустпом к коннекшену лочить этот ключ. Но так вы добьетесь только лишь непротиворечивости, истинной параллельности вам не получить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2012, 18:06:02 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
А можно в каждом новом треде создавать новый тред и между коннекшенами пробрасывать уровень изоляции такой чтоб были выидны не закомиченные изменения другого конекшена ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2012, 18:08:52 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
А можно в каждом новом треде создавать новый "конекшен" Очепятка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2012, 18:13:28 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
buldozer01и между коннекшенами пробрасывать уровень изоляции такой чтоб были выидны не закомиченные изменения другого конекшена ?Нет. Несколько транзакций могут разделять одно подключение, а вот наоборот - никогда. P.S. Задача-то какая? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2012, 18:16:53 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
buldozer01А можно в каждом новом треде создавать новый тред и между коннекшенами пробрасывать уровень изоляции такой чтоб были выидны не закомиченные изменения другого конекшена ? Может проще версии использовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2012, 18:18:30 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
Версии чего ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2012, 18:20:36 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
buldozer01Версии чего ? Версии записей в базе хранить и использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2012, 18:24:20 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Не так не получится мы заранее не знаем схему БД наша задача - движок между тредами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2012, 18:25:07 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
buldozer01А можно в каждом новом треде создавать новый тред и между коннекшенами пробрасывать уровень изоляции такой чтоб были выидны не закомиченные изменения другого конекшена ? Может всем Dirty Read разрешить и всё. 8))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2012, 18:25:52 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
buldozer01А можно в каждом новом треде создавать новый тред и между коннекшенами пробрасывать уровень изоляции такой чтоб были выидны не закомиченные изменения другого конекшена ? Объясни лучше почему Connection только один. 8) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2012, 18:28:10 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
buldozer01наша задача - движок между тредамиУ движка-то какая задача? Сейчас вы пытаетесь достать левое ухо, вывернув правую руку за спину - утомительно и вредно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2012, 18:28:14 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovСейчас вы пытаетесь достать левое ухо, вывернув правую руку за спину - утомительно и вредно. Заметь, это нужно сделать "грамотно". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2012, 18:29:07 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Транзакция одна если можно сделать такое многими конекшенами почему бы и нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2012, 18:29:46 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
BlazkowiczМожет всем Dirty Read разрешить и всё. 8)))"Да за это убивать надо" (ц) старый анекдот. Даже там, где "вроде бы" есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2012, 18:32:03 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
buldozer01, невозможно т.к. один сеанс БД полностью синхронный. Ты толкаешь запрос. И ждёшь и получаешь ответ. Если у тебя много потоков ждут освобождения 1 коннекшена то это попытка использовать это соединение как пул где MAX_CONN=1. Почему-бы тебе не взять готовый пул и не мучиться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2012, 18:32:59 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
maytonПочему-бы тебе не взять готовый пул и не мучиться?Он хочет, что всё "это" происходило в одной транзакции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2012, 18:34:33 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
buldozer01Транзакция одна Вооот ключевой момент. Т.е. много потоков шарят одну транзакцию и ты предполагаешь что RDBMS должна реализовывать конкурентный доступ к данным внутри одной транзакции? Эдак весь ACID на хрен сведётся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2012, 18:36:00 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
buldozer01Транзакция одна если можно сделать такое многими конекшенами почему бы и нет Можно. Но обращения всё равно придётся сериализовать (выстраивать в очередь). Достаточно странно, если одна транзакция понадобиться параллельным потокам. Скорее всего в системе одновременно транзакцию будет использовать один поток. Ваш же движок будет перебрасывать connection между потоками. Но одновременно с ним будет работать только один. Поэтому достаточно себя обезопасить через lock или очередь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2012, 18:43:12 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
http://docs.oracle.com/cd/B28359_01/appdev.111/b28424/adfns_xa.htm#BABBDDFC Вот интересный тынц в тему ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2012, 18:46:08 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
buldozer01 http://docs.oracle.com/cd/B28359_01/appdev.111/b28424/adfns_xa.htm#BABBDDFC Вот интересный тынц в тему Да, пожалуйста. Только заметь что там подразумевается работа с многими XA ресурсами. У тебя один XA ресурс. Конкурентный доступ к нему в одной транзакции никто не обещал. И вообще не стоит путать глобальную XA транзакцию и локальную транзакцию отдельного ресурса (DB Connection). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2012, 18:52:34 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
А потом окажется что "это был теоретический вопрос(с)". Я даже и придумать то не могу зачем такая шляпа может понадобиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2012, 18:57:30 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
забыл никА потом окажется что "это был теоретический вопрос(с)". Я даже и придумать то не могу зачем такая шляпа может понадобиться. Зришь в корень http://www.sql.ru/forum/actualsearch.aspx?a=buldozer01&ma=0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2012, 23:32:04 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Да нет это реальная задача как и остальные линки которые ты не поленился поискать непонятно только зачем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2012, 00:24:57 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
buldozer01Да нет это реальная задача У реальной задачи - реальная постановка. Здесь же ты её ещё не рассказал. buldozer01 как и остальные линки которые ты не поленился поискать непонятно только зачем. Да, столько труда приложил. Сначала в пофиль зайти, потом темы автора. Аж два клика. Чуть не надорвался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2012, 00:36:38 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Я описал необходимое и достаточное количество условий задачи А зачем оно - на форум нет смысла писать. Нечего сказать дельного по теме - прошу не троллить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2012, 00:41:41 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
buldozer01Я описал необходимое и достаточное количество условий задачи Нет. Ты описал свое решение задачи. buldozer01А зачем оно - на форум нет смысла писать. Без сомнения. buldozer01Нечего сказать дельного по теме - прошу не троллить. Заметь, я тут единственный кто тебе пытается объяснить про XA ресурсы и почему работа внутри одной DB транзакции не может бы конкурентной и т.п. А ты как хамил так и продолжаешь. И чем тебе предложеные решения не подходят, ты тоже себя не утруждаешь объяснить. Зато чего не по теме ляпнуть, так это в первую очередь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2012, 00:48:53 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
buldozer01Blazkowicz, Я описал необходимое и достаточное количество условий задачи А зачем оно - на форум нет смысла писать. Нечего сказать дельного по теме - прошу не троллить. Вот всегда так - хочешь помочь, сделать как лучше, а получается:) ПС. То что ты описал это не задача, а бредовый способ решить какую-то задачу, а вот задачу мы как раз и хотели у тебя узнать, чтобы помочь. Не хочешь как хочешь:). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2012, 00:51:00 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Это не хамство а просьба не отходить от темы - и я не разу не нахамил за все время обсуждения этой темы и предыдущих. За помощь - гигантское спасибо. А вот обсуждение - нафига я завел эту тему - ах ну да там же он еще кучу подобной хрени завел давайте дружно поржем - я подругому как троллинг не назову. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2012, 00:52:10 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
Задача проста Есть транзакционный механизм распределенный между тредами. Транзакция XA одна тредов много. Все что сделано в конекшене одного треда должно быть видно другому треду. Вот буквальная постановка задачи - нет никой постановки от бизнеса и близко. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2012, 00:53:32 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
buldozer01Задача проста Есть транзакционный механизм распределенный между тредами. Транзакция XA одна тредов много. Все что сделано в конекшене одного треда должно быть видно другому треду. Вот буквальная постановка задачи - нет никой постановки от бизнеса и близко. Ок, и опять вы про свое... Скажите, зачем вы ушли от стандартной схемы одна транзакция - один коннекшен? Типа чтобы быстрее было? Так что мешает разбить задачу на независимые наборы данных и обработать в разных коннекшенах? Вот то что вы описали в принципе невозможно. Точнее возможно, но доступ к коннекшену все равно будет последовательный изо всех потоков, так смысл? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2012, 00:57:23 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
забыл ник, Точнее одна транзакция - один коннекшен - один тред ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2012, 00:58:06 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
забыл ник, Смысл в том что в транзакции также может быть и JMS продюсер и она нужна распределенная и единая между тредами. В принципе пока нас устроил вариант с блокировкой на каждом execute ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2012, 00:59:27 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
забыл никТочнее возможно, но доступ к коннекшену все равно будет последовательный изо всех потоков, так смысл? Я более чем уверен что в конечной системе к одному соединению будет именно такой последовательный доступ, просто из разных потоков. Но топикастеру нужно время чтобы это понять. Вот и никак не ответит ни на один комент в тему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2012, 01:00:53 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
забыл никТочнее одна транзакция - один коннекшен - один тред Не обязательно. Если используется асинхронный подход, то вполне можно перебросить конекшн в другой поток и асинхронно продолжить тразнакцию. Но автор же не хочет объяснить какая у него вокруг этой задачи архитектура. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2012, 01:03:52 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, >>Вот и никак не ответит ни на один коммент в тему. Ну Ну ... Идея складировать все sql запросы в очередь и потом их выполнять вот над чем я в серьез думаю Но с локом оно синхронно и как то надежнее что ли ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2012, 01:04:11 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
Архитектура проста JVM + Arjuna Транзакционный менеджер + ActiveMQ что еще из архитектуры ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2012, 01:05:20 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
buldozer01забыл ник, Смысл в том что в транзакции также может быть и JMS продюсер и она нужна распределенная и единая между тредами. В принципе пока нас устроил вариант с блокировкой на каждом execute Фига се, это уже интереснее:) уже и JMS появился. Вот только JMS нужен немного для другого, если не секрет расскажите а зачем такой вот изврат? Глядишь через пару шагов и до сути дойдем. Обычно JMS как связан с транзакциями ведь - достал данные из базы, чета сделал, кинул сообщение в JMS, транзакцию закрыл.. Суть в том чтобы транзакционно доставить мессадж или не доставить при роллбаке, а код самого листенера пихать в транзакцию.. попахивает чем-то нехорошим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2012, 01:06:54 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
buldozer01В принципе пока нас устроил вариант с блокировкой на каждом execute Здесь как раз хорошо должна подойти оптимистичная блокировка, которую ты так хотел применить. Ведь по логике конкурентные запросы к одной транзакции должны быть исключены. Т.е. в большинстве случаев не происходить вообще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2012, 01:07:22 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
buldozer01Идея складировать все sql запросы в очередь и потом их выполнять вот над чем я в серьез думаю Но с локом оно синхронно и как то надежнее что ли Как раз-таки очередь - идеальный вариант при вашем раскладе, ведь очередь реализована на тех же самых локах, а когда пишешь их вручную - есть шанс напортачить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2012, 01:08:31 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
забыл ник, >> Обычно JMS как связан с транзакциями ведь - достал данные из базы, чета сделал, кинул сообщение в JMS Обычно я по утрам пью чай а вот сегодня выпил кефиру .... сорри конечно - но бывают и другие кейсы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2012, 01:10:23 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
забыл ник, Очередь асинхронна и непонятно что там с видимостью Кто то сделал execute и думает что в базе уже все ок Ан нет оно тока в очередь встало Косяки на прикладном уровне ацкие могут быть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2012, 01:11:44 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
buldozer01>>Вот и никак не ответит ни на один коммент в тему. Ну Ну ... Ну, вот опять. buldozer01Идея складировать все sql запросы в очередь и потом их выполнять вот над чем я в серьез думаю Но с локом оно синхронно и как то надежнее что ли 13551827 Я тебе эти два решения первым же коментом привел. Отказ от пессимистичных блокировок может серьезно увеличить производительность. Иначе у тебя вся асинхронность лесом пойдёт. Ты её обратно к синхронности приведешь за счет локов. Чем лок "надежнее" - не понятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2012, 01:11:54 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
buldozer01Транзакция XA одна тредов много. Я тебе уже выше писал. Не мешай в кучу глобальную транзакцию и транзакцию в базе. Но ты это успешно продолжаешь игнорировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2012, 01:13:58 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
buldozer01забыл ник, >> Обычно JMS как связан с транзакциями ведь - достал данные из базы, чета сделал, кинул сообщение в JMS Обычно я по утрам пью чай а вот сегодня выпил кефиру .... сорри конечно - но бывают и другие кейсы Нет я ж не спорю, все может быть, можно и сахар в чае рукой размешивать. Ну когда ложек нет. Ну надо так надо - вам виднее, хотя очень похоже на применение правильных инструментов неправильным образом. Тогда складируйте все в очередь, как вы и написали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2012, 01:15:49 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
На прикладном уровне юзера делает int t = execute ("select t from t"); После execute я уснуть должен ? и дождаться пока результат в очереди вычислится ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2012, 01:17:02 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
buldozer01забыл ник, Очередь асинхронна и непонятно что там с видимостью Кто то сделал execute и думает что в базе уже все ок Ан нет оно тока в очередь встало Косяки на прикладном уровне ацкие могут быть Какие если консьюмер один? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2012, 01:17:51 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
забыл ник, проблемы на с JMS а с базой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2012, 01:19:10 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
buldozer01Обычно я по утрам пью чай а вот сегодня выпил кефиру .... сорри конечно - но бывают и другие кейсы Тебе дело пишут, а ты вы-бываешься. Смотри. Продюсер открывает XA транзакцию. Отрывает DB Connection. Что-то туда пишет. Отправляет асинхронное сообщение. Консюмер получает сообщение - состояние он как раз должен получить из сообщения, а не из базы данных. Обрабатывает его через свой DB Connection и вместе они дружно комитят XA транзакцию и оба DB соединения. Разница в том что ты хочешь состояния вычитать через базу. Нафига? Когда его можно передать через очередь. С другой стороны можно передать ссылку на Connection. И пусть себе читает. Тогда важно чтобы не использовались топики. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2012, 01:21:31 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
buldozer01На прикладном уровне юзера делает int t = execute ("select t from t"); После execute я уснуть должен ? и дождаться пока результат в очереди вычислится ? Мля, ну нужно синхронно - уснул. Нужно асинхронно - подписался на ответ и освободил поток. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2012, 01:23:21 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
BlazkowiczС другой стороны можно передать ссылку на Connection. И пусть себе читает. Тогда важно чтобы не использовались топики. А разве коннекшен Serializable? Нету IDE под рукой чтобы проверить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2012, 01:28:51 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
забыл никА разве коннекшен Serializable? Нету IDE под рукой чтобы проверить. нет, конечно. Но не всякая очередь это JMS, где обязательно персистить нужно. При особом желании локально можно и передать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2012, 01:31:15 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Я вот читал что распределенную транзакцию можно открыть прямо внутри оракла DBMS_XA. http://psoug.org/reference/dbms_xa.html Оно не поможет в теме ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2012, 01:31:33 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
BlazkowiczТебе дело пишут, а ты вы-бываешься Угу и я после этого еще хамлю - Ох ты божешь мой какие мы нежные важные ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2012, 01:36:44 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
Ты вместо того чтобы свои мысли выразить, кидаешь какие-то ссылки. И что ты этим хотел сказать. Ну, вот, давай я за тебя почитаю про tightly coupled branches. Те самые, которыем могут видеть изменения друг друга. http://www.oracle.com/technetwork/products/clustering/overview/distributed-transactions-and-xa-163941.pdf Tightly coupled transactions require the RM to guarantee that resource deadlock will not occur between individual branches of an XA transaction. The way that this is implemented is at the discretion of the RM, but it can have the effect of limiting concurrent data access across all tightly coupled branches. (e.g. only one branch can be actively using DML at a time ). Это именно то о чем я говорю. Т.е. не смотря ни на что, доступ к одному ресурсу в рамках одной транзакции не может быть конкурентным. Возможно это всё уже раелизовано в твоём менеджере транзакций и не придется ничего изобратать. Но по логика работать оно будет только так как тебе объясняли выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2012, 01:50:51 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
buldozer01Угу и я после этого еще хамлю - Ох ты божешь мой какие мы нежные важные Ну это же тебе в каждой теме тролли мерещатся. Я тебе по теме кучу коментов написал. Ты отвечаешь на один из пяти в духе "а мне кажется что вот по ссылке что-то есть". Я понимаю что мои ответы не сразу до тебя доходят. Но ты возьми время, обдумай их. Задай вопросы если не понятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2012, 01:55:28 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Понял спасибо. Вообщем подумав сделаю АПИ с синхронным и асинхронным выполнением и механизмом обратных колбаков Вопрос как быть с JPA :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2012, 01:55:54 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
buldozer01На прикладном уровне юзера делает int t = execute ("select t from t"); После execute я уснуть должен ? и дождаться пока результат в очереди вычислится ? я что то не пойму уважаемые профи - в Java нет готового АПИ для асинхронности? Типа как у MDAC от MS с ГАЛКОЙ - "установить асинхронность"? Там в основной поток приходит сообщение с результатом. Никаких потоков на прикладном уровне городить не надо. Всё сделано. - зачем автору асинхронность? Если пользователь ЗАПРОСИЛ данные? Или делаем нечто мегауниверсальное? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2012, 11:59:31 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
Читаем доку про loosely coupling и находим параллельное асинхронное многопоточное выполнение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2012, 19:38:50 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
buldozer01Читаем доку про loosely coupling и находим параллельное асинхронное многопоточное выполнение Можно вслух? С ударением на нужные места, доку случаем не вы сами писали? А то что-то не встречал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2012, 20:24:31 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
buldozer01Читаем доку про loosely coupling и находим параллельное асинхронное многопоточное выполнение а дальше молимся и читаем мантру? Там нет волшебных пузырьков. В простом случае с ГУИ (события от ГУИ) - асинхронность не нужна. В сложных случаях, либо - пул коннектов, либо каждому потоку - свой коннект. Т.к. в самой СУБД параллелизм хорошо работает в разных коннектах(соединениях) а не в одном. ... На первый вопрос ты не ответил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2012, 20:26:55 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
Итак: В оракле есть два вида бранчей Loosely coupled: Позволяет полностью параллельное выполнение без блокировок - однако бранчи не видят изменения друг дружки Tightly coupled Бранчи видят друг дружку но выполнение запросов с блокировкой. Реализовал - работает. Всем серьезным гуру а также троллям и злопыхателям большое спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 23:00:17 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
buldozer01Loosely coupled: Позволяет полностью параллельное выполнение без блокировок - однако бранчи не видят изменения друг дружки Разные потоки используют свои Connection-ы без ограничений. buldozer01Tightly coupled Бранчи видят друг дружку но выполнение запросов с блокировкой. Разные потоки шарят Connection, но используют его строго по очереди. buldozer01Всем серьезным гуру а также троллям и злопыхателям большое спасибо А теперь перечитай свой первый вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 23:08:18 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Ну я сегодня попробывал шарить один XA коннекшен между тредами - такой расколбас начался :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 23:14:52 |
|
||
|
Connection between threads
|
|||
|---|---|---|---|
|
#18+
К тому же блокировки все внутри оракла - как оно надежнее чем джава-самописные ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2012, 23:15:20 |
|
||
|
|

start [/forum/topic.php?all=1&fid=59&tid=2130404]: |
0ms |
get settings: |
18ms |
get forum list: |
25ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
56ms |
get topic data: |
18ms |
get forum data: |
5ms |
get page messages: |
126ms |
get tp. blocked users: |
2ms |
| others: | 285ms |
| total: | 549ms |

| 0 / 0 |
