系统变量设置问题

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【 TiDB 使用环境】
【概述】场景+问题概述
版本4.0.6
对于系统变量有如下疑问:
官方文档中提到:
TiDB 系统变量的行为与 MySQL 相似但有一些不同,变量的作用范围可以是全局范围有效 (Global Scope)、实例级别有效 (Instance Scope) 或会话级别有效 (Session Scope),或组合了上述多个范围。其中:

  • GLOBAL 作用域变量的更改,设置后 只对新 TiDB 连接会话生效 ,当前活动连接会话不受影响。更改会被持久化,重启后仍然生效。
  • INSTANCE 作用域变量的更改,设置后会立即对当前 TiDB 实例所有活动连接会话或新连接会话生效,其他 TiDB 实例不生效。更改 不会 被持久化,重启 TiDB 后会 失效

疑问1:这里提到的实例级别和会话级别是不是一个概念,如果不是,我怎么设置实例级别的变量呢?没有找到相关命令和介绍。

而且下面的解释,又提到的INSTANCE,并没有提到SESSION级别的介绍,那SESSION的又会如何?
*** 对 GLOBAL 作用域变量的更改,设置后 只对新 TiDB 连接会话生效 ,当前活动连接会话不受影响。更改会被持久化,重启后仍然生效。**
*** 对 INSTANCE 作用域变量的更改,设置后会立即对当前 TiDB 实例所有活动连接会话或新连接会话生效,其他 TiDB 实例不生效。更改 不会 被持久化,重启 TiDB 后会 失效 。**

疑问2:
窗口A:通过地址100连接到tidb server,然后设置SESSION级别的变量以后,在当前SESSION会话下查看变量已经设置为更新后的。
窗口B:通过地址100连接到tidb server,查看窗口A设置的变量的值,仍然为之前的值。
如上现象正常吗??

【背景】做过哪些操作
【现象】业务和数据库现象
【业务影响】
【TiDB 版本】
【附件】

  1. TiUP Cluster Display 信息

  2. TiUP Cluster Edit Config 信息

  3. TiDB- Overview 监控

  • 对应模块日志(包含问题前后1小时日志)
1 个赞

疑问1:实例级别和会话级别不是一个概念,例如ddl_slow_threshold这个实例级别的参数, 作用域仅为实例级,只在你修改的那个tidb上生效,设置方式也是set,退出重新登录后不会失效,会话级别只对当前会话生效。
疑问2:正常现象,mysql上也是一样的,窗口A和窗口B对应不同session,session级别的参数只对当前session生效,否则就矛盾了。

2 个赞


tidb内有多个tidb server实例,全局就是所有tidb server生效,实例就是连接的tidb 内生效,session就是当前会话生效

退出后重新登录,参数值仍是500

不影响另一个实例的参数值

4 个赞

我感觉这块内容写的有点乱,都不统一介绍。丢三落四的感觉。

参数、环境变量这块确实比较容易迷糊

那我的理解,是不是设置全局参数就加GLOBAL关键字 set golbal parameter=value。
设置实例级别或者会话级别的参数,就直接SET parameter=value就行了,至于生效范围,就看这个参数的作用域了。

1 个赞

是这样的,没有专门的instance语法

没毛病

实例级和会话级不一样的

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。