关于TIDB的系统变量tidb_force_priority

参见文档https://docs.pingcap.com/zh/tidb/v3.0/tidb-specific-system-variables#tidb_force_priority

文档中描述tidb_force_priority为session级的变量

实际在tidb 3.0.12版本中
默认为NO_PRIORITY

按时间顺序:
sessionA执行 set session tidb_force_priority = ‘LOW_PRIORITY’;

sessionB中
show variables like ‘tidb_force_priority’ 显示为 ‘LOW_PRIORITY’,
show session variables like ‘tidb_force_priority’ 显示为 ‘LOW_PRIORITY’,
show GLOBAL VARIABLES like ‘tidb_force_priority’ 显示为 ‘NO_PRIORITY’

请问

  1. 这个变量是session级的吗,查看当前session的优先级,应该以哪个为准?

  2. 通过设置的语句执行的优先级,有监控可以看吗? TiKV-detail的dashboard–scheduler–scheduler_priority_command 里显示的优先级是否是这个tidb_force_priority这个变量控制的? 我这边虽然设置了LOW_PRIORITY,但是监控上的LOW_PRIORITY没有数据

  3. tidb_force_priority 这个变量设置的优先级,背后的原理是? (是具体影响了哪些操作而达到设置优先级的目的?)

TiDB log 日志会记录是否生效了 session 级别的 tidb_force_priority 的参数。这个是在 TiDB-server 的执行层进行排序,会优先执行 HIGH_PRIORITY 级别的 session 的 SQL。

你好,我的问题是
同时起两个session,sessionA中修改tidb_force_priority 会影响到sessionB中的tidb_force_priority变量

您好,稍等我们确认下。

不好意思,tidb_force_priority 这个参数确实是 session 级别,但是现在实现有些问题,导致使用时用了 global 的 variable,已经反馈给研发同学,我们尽快修复。

感谢解答
就目前3.0.12版本的实现,sessionA在2时刻执行的sql,和sessionB在1,3时刻执行的sql,设置的优先级会生效吗? tidb_force_priority 都是NO_PRIORITY 还是?

现在实现有些问题,你看到的应该是 global 参数

sessionB在3时刻后,执行sql时的优先级是哪个优先级能否帮忙确认下
感谢:pray:

你好,

目前该参数实现有 bug,所以在哪些时刻所产生的值不需要重点关注,如果这边更新了 issue 更新此贴

好的 感谢:raising_hand_man:

:ok_hand: