powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / При использовании рекурсии вылазит "Too many concurrent executions of the same request"
25 сообщений из 33, страница 1 из 2
При использовании рекурсии вылазит "Too many concurrent executions of the same request"
    #39370871
Фотография alex_p_n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет
Юзаю ОгнеПтица 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
При использовании рекурсии вылазит "Too many concurrent executions of the same request"
    #39370879
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex_p_n,

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

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

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

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

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

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

Только что отловил ID, на котором оно спотыкается - отфетчило 1025 записей (!) Моя шокэ... Откуда?...
Но то таке, будем разбираться.
Но это именно кол-во выбранных записей, глубина дерева - 16 (lvl=16)...
Моя не понимай... :(
...
Рейтинг: 0 / 0
При использовании рекурсии вылазит "Too many concurrent executions of the same request"
    #39370926
Фотография alex_p_n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,
Глубина "ветвей" высыпается в поле lvl
...
Рейтинг: 0 / 0
При использовании рекурсии вылазит "Too many concurrent executions of the same request"
    #39370941
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex_p_nПри многократном обращении к этому запросуУточни, что тут имеется в виду
...
Рейтинг: 0 / 0
При использовании рекурсии вылазит "Too many concurrent executions of the same request"
    #39370945
Фотография alex_p_n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex_p_n,
Я походу понял, в чём косяк!
Какого-то хрена в таблицу попала запись, где MasterID=ChildID! Птому-то оно и билось головой об стену :)
...
Рейтинг: 0 / 0
При использовании рекурсии вылазит "Too many concurrent executions of the same request"
    #39370947
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
При использовании рекурсии вылазит "Too many concurrent executions of the same request"
    #39370950
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
При использовании рекурсии вылазит "Too many concurrent executions of the same request"
    #39370964
Фотография alex_p_n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

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

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

Я вообще поставил проверку на несовпадение мастера и чайлда
...
Рейтинг: 0 / 0
При использовании рекурсии вылазит "Too many concurrent executions of the same request"
    #39371008
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
При использовании рекурсии вылазит "Too many concurrent executions of the same request"
    #39371015
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex_p_n,

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

1 -> 2 -> 3 -> 1

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

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

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

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

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

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


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