实测 PostgreSQL 17 行级安全策略的性能开销:简单等值策略几乎无成本;调用 PL/pgSQL 等不可内联函数的策略会退化为全表扫描,耗时近 2 秒;成员子查询策略每查询约 80 毫秒。lower()、LIKE 等非 leakproof 函数会阻止索引使用,使大租户查询从 0.2 毫秒增至 45 毫秒。建议将辅助函数声明为 STABLE PARALLEL SAFE,使用生成列或 leakproof 操作符,并提前解析租户归属。
本文探讨PostgreSQL行级安全(RLS)的性能与安全问题。RLS通过自动附加条件隐藏数据,为提升性能引入LEAKPROOF函数标记,允许其在安全条件前执行。作者指出EXPLAIN ANALYZE等隐蔽信道可能泄露隐藏数据,而严格标记LEAKPROOF会拖累性能,建议仅当参数可触发泄露时才拒绝标记,并质疑是否应限制EXPLAIN权限。
完成下面两步后,将自动完成登录并继续当前操作。