Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / При использовании рекурсии вылазит "Too many concurrent executions of the same request" / 25 сообщений из 33, страница 1 из 2
20.12.2016, 12:06
    #39370871
alex_p_n
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При использовании рекурсии вылазит "Too many concurrent executions of the same request"
Всем привет
Юзаю ОгнеПтица 2.1, в своей процедуре использу запрос с рекурсией (построение дерева для выбранных узлов), вот такой
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
with recursive tree
  as (select t.MainOperID, t.MainOperName, t.MainWareCode, t.MainWareName, t.ChildOperID, t.childopername, t.ChildWareCode,
   t.ChildWareName, 1 lvl
      from tblProdOperTree t
      where t.MainOperID=:AOperID
      union all
      select t.MainOperID, t.MainOperName, t.MainWareCode, t.MainWareName, t.ChildOperID, t.childopername, t.ChildWareCode,
       t.ChildWareName, prior.lvl + 1 lvl
      from tblProdOperTree t
      inner join tree prior on prior.ChildOperID = t.MainOperID)
    select * from tree)


При многократном обращении к этому запросу - вылазит вот такая хрень:
"Too many concurrent executions of the same request"
Как это можно побороть? :(
...
Рейтинг: 0 / 0
20.12.2016, 12:10
    #39370879
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При использовании рекурсии вылазит "Too many concurrent executions of the same request"
alex_p_n,

мне кажется глубина дерева на каком-то этапе становится больше 1023
...
Рейтинг: 0 / 0
20.12.2016, 12:15
    #39370888
alex_p_n
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При использовании рекурсии вылазит "Too many concurrent executions of the same request"
Симонов Денис,
Имеешь в виду, что ошибка в логике и рекурсия не выходит наружу? Но на примерах, когда задаю конкретное значение :AOperID, он выдаёт нормальное число записей - 3, 10, 14 - у кого как...
Если б не выходила - он бы мне бесконечное кол-во записей фетчил, не?..
...
Рейтинг: 0 / 0
20.12.2016, 12:17
    #39370891
alex_p_n
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При использовании рекурсии вылазит "Too many concurrent executions of the same request"
Симонов Денис,

Да и нет у меня таких глубин, макс. вложенность - 16...
...
Рейтинг: 0 / 0
20.12.2016, 12:24
    #39370902
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При использовании рекурсии вылазит "Too many concurrent executions of the same request"
alex_p_n,

я похоже перепутал сообщение об ошибке.
...
Рейтинг: 0 / 0
20.12.2016, 12:32
    #39370913
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При использовании рекурсии вылазит "Too many concurrent executions of the same request"
Hello, Alex P_n!
You wrote on 20 декабря 2016 г. 12:31:41:

Alex P_n> Как это можно побороть?для начала посчитай глубину.
не руками, а этим же запросом, добавив "служебное" поле.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
20.12.2016, 12:35
    #39370918
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При использовании рекурсии вылазит "Too many concurrent executions of the same request"
Мимопроходящий,

дык оно у него есть.
...
Рейтинг: 0 / 0
20.12.2016, 12:39
    #39370924
alex_p_n
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При использовании рекурсии вылазит "Too many concurrent executions of the same request"
Симонов Денис,

Только что отловил ID, на котором оно спотыкается - отфетчило 1025 записей (!) Моя шокэ... Откуда?...
Но то таке, будем разбираться.
Но это именно кол-во выбранных записей, глубина дерева - 16 (lvl=16)...
Моя не понимай... :(
...
Рейтинг: 0 / 0
20.12.2016, 12:40
    #39370926
alex_p_n
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При использовании рекурсии вылазит "Too many concurrent executions of the same request"
Мимопроходящий,
Глубина "ветвей" высыпается в поле lvl
...
Рейтинг: 0 / 0
20.12.2016, 12:54
    #39370941
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При использовании рекурсии вылазит "Too many concurrent executions of the same request"
alex_p_nПри многократном обращении к этому запросуУточни, что тут имеется в виду
...
Рейтинг: 0 / 0
20.12.2016, 12:56
    #39370945
alex_p_n
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При использовании рекурсии вылазит "Too many concurrent executions of the same request"
alex_p_n,
Я походу понял, в чём косяк!
Какого-то хрена в таблицу попала запись, где MasterID=ChildID! Птому-то оно и билось головой об стену :)
...
Рейтинг: 0 / 0
20.12.2016, 12:57
    #39370947
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При использовании рекурсии вылазит "Too many concurrent executions of the same request"
Hello, Alex P_n!
You wrote on 20 декабря 2016 г. 12:57:31:

Alex P_n

31
12:57:31
2016




20.12.2016 12:56, alex_p_n пишет:
> Автор: alex_p_n. alex_p_n,
> Я походу понял, в чём косяк!
> Какого-то хрена в таблицу попала запись, где MasterID=ChildID! Птому-то оно и билось головой об стену :)
> Тема < http://www.sql.ru/forum/actualthread.aspx?tid=1243357> Ответить < http://www.sql.ru/forum/actualpost.aspx?tid=1243357> Сообщение
> < http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1243357&msg=20026597>
>
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
20.12.2016, 12:58
    #39370950
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При использовании рекурсии вылазит "Too many concurrent executions of the same request"
Hello, Alex P_n!
You wrote on 20 декабря 2016 г. 12:57:47:

Alex P_n> Какого-то хрена в таблицу попала запись, где MasterID=ChildID!повесь на него CHECK CONSTRAINT
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
20.12.2016, 13:12
    #39370964
alex_p_n
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При использовании рекурсии вылазит "Too many concurrent executions of the same request"
Мимопроходящий,

Та уже :)
...
Рейтинг: 0 / 0
20.12.2016, 13:18
    #39370970
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При использовании рекурсии вылазит "Too many concurrent executions of the same request"
alex_p_n,

поможет только на текущем узле. Дерево можно превратить в циклический граф и через несколько улов. Поставь в запрос дополнительное условие ограничивающее глубину
...
Рейтинг: 0 / 0
20.12.2016, 13:42
    #39371001
alex_p_n
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При использовании рекурсии вылазит "Too many concurrent executions of the same request"
Симонов Денис,

Я вообще поставил проверку на несовпадение мастера и чайлда
...
Рейтинг: 0 / 0
20.12.2016, 13:45
    #39371008
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При использовании рекурсии вылазит "Too many concurrent executions of the same request"
Hello, Alex P_n!
You wrote on 20 декабря 2016 г. 13:43:57:

Alex P_n> Я вообще поставил проверку на несовпадение мастера и чайлдаон тебе толкует про "закольцовывание" на разных узлах
1 -> 2 -> 1
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
20.12.2016, 13:55
    #39371015
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При использовании рекурсии вылазит "Too many concurrent executions of the same request"
alex_p_n,

как и сказал МП могут быть вот такие ситуации

1 -> 2 -> 3 -> 1

никаким CHECK такое не проверить. Точнее проверить можно, но наверное не нужно ибо дорого. А для текущего узла почему бы и не проверять.
...
Рейтинг: 0 / 0
20.12.2016, 14:01
    #39371022
alex_p_n
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При использовании рекурсии вылазит "Too many concurrent executions of the same request"
Симонов Денис,

Налепил чеков и проверок в самом запросе - вроде работает :)
...
Рейтинг: 0 / 0
20.12.2016, 14:24
    #39371045
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При использовании рекурсии вылазит "Too many concurrent executions of the same request"
alex_p_n, у мну, на всякий подобный случай, для INSERT и UPDATE сделан триггер, проверяющий отсутствие цикличности.
Рекомендую!
...
Рейтинг: 0 / 0
20.12.2016, 14:29
    #39371053
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При использовании рекурсии вылазит "Too many concurrent executions of the same request"
Hello, Rdb Dev!
You wrote on 20 декабря 2016 г. 14:28:30:

Rdb Dev> сделан триггер, проверяющий отсутствие цикличности.глупо, как обычно.
суслика видишь, нет? а он есть! (с)

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
20.12.2016, 14:32
    #39371058
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При использовании рекурсии вылазит "Too many concurrent executions of the same request"
rdb_dev,

хреновая рекомендация в высоконагруженных системах. У тебя при любой вставке/обновлении триггер выполняет довольно тяжелый запрос на поиск цикличности, в результате массовые вставки/обновления будут очень медленные. Если данные всегда по одной записи неторопливо вводит пользователь, то ещё можно.
...
Рейтинг: 0 / 0
21.12.2016, 01:00
    #39371494
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При использовании рекурсии вылазит "Too many concurrent executions of the same request"
Симонов Денис, чего там тяжелого? В триггере надо лишь "отмотать назад" по дереву до корня и не встретить "себя же" - любимого. Единственно возможная тяжесть - блокирование записей при "отмотке".
...
Рейтинг: 0 / 0
21.12.2016, 01:23
    #39371496
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При использовании рекурсии вылазит "Too many concurrent executions of the same request"
rdb_dev,

практически никакая проверка в триггере не в состоянии корректно работать в конкурентной среде.
Кроме проверки уникальности или ссылочной целостности.
...
Рейтинг: 0 / 0
21.12.2016, 04:17
    #39371508
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При использовании рекурсии вылазит "Too many concurrent executions of the same request"
hvlad, т.е., если в триггере при "отматывании назад" к корню я использую SELECT ... FOR UPDATE WITH LOCK, это не решит задачу?
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / При использовании рекурсии вылазит "Too many concurrent executions of the same request" / 25 сообщений из 33, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]