请问MAX_EXECUTION_TIME(N)能按用户限制?

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:v3.0.15
  • 【问题描述】: MAX_EXECUTION_TIME(N)可以限制sql的执行时间,这个能按用户唯独设置吗?另外这个限制对tidb内部sql有没有限制?谢谢

若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出打印结果,请务必全选并复制粘贴上传。

MAX_EXECUTION_TIME 分三种:hint,global 变量,session 变量。
设置 global 变量后,不重启 tidb 的情况下,对内部 sql 不生效。因为内部 sql 都是启动时开单独的 session 运行的,global 变量只对新开的 session 生效。
设置 global 变量后,重启 tidb 之后对所有 sql 都生效。
设置 session 变量后,对内部 sql 不生效,因为用户 session 里不会有内部 sql。

目前无法按用户维度设置。如果有对用户维度配置的需求,建议可以到 https://github.com/pingcap/tidb/issues 提交需求,多谢。

为嘛我加了 SELECT /*+ MAX_EXECUTION_TIME(1000) */ 不起效果呢,我在sql终端上执行的,一直没响应

可以检查一下使用的 mysql-client 版本是否符合要求。MySQL 命令行客户端在 5.7.7 版本之前默认清除了 Optimizer Hints。需要添加 --comments
具体可以参考:
https://docs.pingcap.com/zh/tidb/stable/optimizer-hints#optimizer-hints