暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 导致性能问题的RLS

ASKTOM 2021-02-03
712

问题描述

嗨,汤姆,
我们已经实现了基于会话的客户端标识符的RLS
当RLS应用于特定客户端标识符时,查询将继续运行
如果我对管理员用户应用相同的where条件,则查询运行速度很快
这是由于RLS还是其他原因?
是否一次为表的每一行或整个表应用条件?

专家解答

RLS会更改查询的文本,因此您可能正在运行一个全新的查询,然后要遵守与普通SQL相同的标准SQL调优要求,即,良好的统计信息,正确的索引等...

我会看跑步:

ALTER会话集事件 '永远10730跟踪名称上下文,级别1';

然后使用RLS策略运行您的SQL。例如,如果你有一个RLS函数 (说)

create or replace function rls_func ... as
begin
  return 'hiredate is not null';
end;
/


然后,运行 “从emp中选择 *” 时创建的跟踪文件将显示

Policy function: RLS_FUNC
RLS view  :
SELECT  "EMPNO","ENAME","JOB","MGR","HIREDATE","SAL","COMM","DEPTNO" FROM "CHA"."EMP"   "EMP" WHERE (hiredate is not null)



然后,您可以将调整工作集中在 * true * SQL上
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论