Цитата:
Сообщение от
SRF
А у вас RLS используется ? Если это так, надо смотреть какой у вас билд, как минимум проблемы с памятью были до ru4.
Безопасность на уровне записей
Если rls есть и в указанном методе его отключить не критично, то можно отключить через св-во query.recordLevelSecurity(false).
Другое дело, что такая правка будет работать только в одном методе, похорошему обновить бы вам ядро, если такая возможность есть.
Да, действительно это из-за RLS. Изменение свойства для query на false для rls сразу же изменило поведение, перестали расходоваться и память, и время
Причем у нас реально RLS очень навороченный, так что я не удивляюсь в этом случае такому расходу памяти
Можно конечно и поотключать rls во всех таких ситуациях где queryRun на runas выполняется, но это для нас как самый крайний вариант. Проблема-то не в том что память расходуется, а в том что именно не возвращается когда уже не нужна процессу. Причем в этом случае никакие средства сборки мусора получается не работают, поскольку на queryRun памятью управляет ядро а не программный код. Поэтому прежде всего вопрос, может есть какие-то средства, на уровне каких-то системных процедур, которые могут принудительно дать команду освободить память? Причем как я понимаю это возможно сделать пока runas ещё работает, поскольку как только он закончится все концы наверно теряются
И насчет билдов вопрос. Наверно самым правильным в нашем случае будет и правда обновиться, и ничего не химичить.
Но я этой темой почти не владею. Поэтому начнем с простого - подскажите а как этот билд ядра определяется? Я обращался в админам, они тоже мало что знают, сказали только что установлен ServicePack 1 RollUp 5, но это для клиента. А как для АОСа тут вообще никто не знает