安全 · 2026 年 6 月 27 日 · 8 分钟

限行、限时、限扫描:三条护栏

公开落地把性能护栏写得很具体:限制扫描量、返回行数、执行时长,必要时走汇总表。三条护栏可以很土:LIMIT、statement_timeout、禁止无时间窗的大表。土的东西才容易坚持。

限行

探索默认 100 或 1000。汇总结果另说。

限时

超过几秒就停,去查时间窗和索引,而不是再等。

限扫描

没有分区键或时间谓词,拒绝执行。

一次完整的问法可以先写成下面这样:

探索性抽样:最近一天,最多 100 行。

落到语句上,草稿常常是:

SELECT order_id, pay_time, pay_amount
FROM orders
WHERE pay_time >= CURRENT_DATE - INTERVAL '1 day'
  AND pay_time < CURRENT_DATE
LIMIT 100;

护栏会挡住一些合法的大查询。挡住了就改走汇总表,而不是拆掉护栏。

安全是前置条件,不是附录提醒

公开落地把只读、限行、限时、脱敏、权限前置、审计写成清单。个人问数同样适用。权限写进谓词和账号,不写进「请注意」四个字。先查出结果再删敏感行,算泄露。

用户原话不要拼进语句。城市走白名单,时间自己算成起止。练习库和生产库两套连接,写在不同文件里。生产默认拒绝探索,没有卡片编号就不跑。

痕迹要留:问题原文、最终语句、返回行数。没有痕迹的漂亮数字,出了事无法复盘。安全看起来胆小。问数里,胆大和改数据只隔着一个分号。

读完这一辑可以做什么

给自己的练习账号取消一切写权限。把手机号、证件、邮箱从 SELECT 默认列表里拿掉。做完这两件,再谈下一次提问。

护栏挡住合法大查询时,改走汇总表,不拆护栏。

WUJI问数

个人笔记站。记录用中文把业务问题变成可核对查询的方法与实践。

本站为个人非经营性网站,内容开放阅读。文中示例仅供学习,执行任何数据库操作前请自行核对。

笔记关于隐私说明使用说明ICP备案查询