十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

StarRocks 系统变量查询指南:SHOW VARIABLES 语法、GLOBAL/SESSION 作用域与实战示例

StarRocks 系统变量查询指南:SHOW VARIABLES 语法、GLOBAL/SESSION 作用域与实战示例 StarRocks 系统变量查询指南SHOW VARIABLES 语法、GLOBAL/SESSION 作用域与实战示例【免费下载链接】starrocksThe worlds fastest open query engine for sub-second analytics both on and off the data lakehouse. With the flexibility to support nearly any scenario, StarRocks provides best-in-class performance for multi-dimensional analytics, real-time analytics, and ad-hoc queries. A Linux Foundation project.项目地址: https://gitcode.com/GitHub_Trending/st/starrocksSHOW VARIABLES 是 StarRocks 中查看系统变量System Variables的核心命令它沿袭 MySQL 的语法习惯用于查看全局GLOBAL或当前会话SESSION级别的变量取值是连接初始化、查询调优、超时控制等场景下的首要排查手段。本文以 docs/en/sql-reference/sql-statements/cluster-management/config_vars/SHOW_VARIABLES.md 为主干结合 docs/en/sql-reference/System_variable.md 与 FE 端 VariableMgr.java 等源码实现完整讲解 SHOW VARIABLES 的语法、修饰符语义、过滤方式与返回结构并给出可直接执行的示例。读完后你将能熟练查看任意系统变量的当前值与生效层级并为配合 SET 命令做会话级或全局级调优打下基础。什么是系统变量StarRocks 提供了大量系统变量用于控制从查询超时、内存限制、优化器开关到兼容性行为在内的各类运行特性。这些变量可以在三个层面生效全局变量Global作用于全局可被会话变量与SET_VAR提示覆盖会话变量Session只作用于当前连接会话可被SET_VAR提示覆盖SET_VAR提示只作用于当前这一条查询语句。系统变量整体参考 MySQL 的变量体系但部分变量只是为兼容 MySQL 客户端协议而存在并不会对 StarRocks 本身的运行产生影响。SHOW VARIABLES 就是观察上述所有变量当前取值的最直接入口完整的变量清单与逐项说明见 docs/en/sql-reference/System_variable.md。权限说明执行 SHOW VARIABLES不需要任何权限。这一点与「设置变量」不同任何用户都可以在会话级别设置变量但只有拥有 SYSTEM 级 OPERATE 权限的用户才能通过SET GLOBAL让变量在全局生效详见 docs/en/sql-reference/System_variable.md。语法SHOW [ GLOBAL | SESSION ] VARIABLES [ LIKE pattern | WHERE expr ]语法要点修饰符GLOBAL/SESSION用于指定查看的变量层级二者均为可选过滤子句LIKE pattern与WHERE expr互斥二选一不带任何修饰符时默认行为等同于SESSIONLOCAL是SESSION的同义词。从解析链路看该语句在 FE 端由语法树访问器 AstBuilder.java 中的visitShowVariablesStatement处理它会解析LIKE模式串与可选的WHERE谓词并依据varType生成ShowVariablesStmt节点随后交由 VariableMgr.java 执行变量枚举与取值。参数说明参数说明修饰符GLOBALSESSION带GLOBAL时显示全局系统变量的值。这些值用于初始化新连接对应的会话变量。若某变量没有全局值则不显示任何值。带SESSION时显示当前连接生效的会话变量值。若某变量没有会话值则显示其全局值。LOCAL是SESSION的同义词。不带修饰符时默认为SESSION。pattern配合LIKE子句按变量名匹配变量的模式串支持%通配符。expr配合WHERE子句按变量名variable_name或变量值value匹配变量的表达式。关于修饰符的底层语义VariableMgr.java 中定义了SESSION、GLOBAL、SESSION_ONLY等标志位GLOBAL变量更像系统配置全局生效且可在运行时动态修改带SESSION属性的变量同时支持会话级与全局级查看与设置仅全局生效的变量例如query_queue_concurrency_limit、lower_case_table_names、version等完整清单见 System_variable.md无法通过会话级SET修改只能使用SET GLOBAL。SHOW VARIABLES 的取值过程最终落到 VariableMgr.java 的dump()方法遍历所有已注册的变量上下文ctxByVarName若指定了LIKE模式则通过PatternMatcher按变量名过滤对带INVISIBLE标志的变量只有会话变量enable_show_all_variables开启时才显示在 SESSION 模式下若变量没有会话级取值则回退读取其全局值——这正好对应文档中「若无会话值则显示全局值」的行为描述。返回值返回列说明Variable_name变量名。Value变量的值。也就是说SHOW VARIABLES 始终返回两列结果第一列为变量名第二列为该变量在当前指定层级下的取值。由于结果结构固定该命令非常适合被脚本或自动化巡检任务解析。示例详解下面四个示例完整覆盖了 SHOW VARIABLES 的四种典型用法LIKE 精确匹配、LIKE 通配符模糊匹配、WHERE 按变量名过滤、WHERE 按变量值过滤。示例 1使用 LIKE 精确匹配变量名mysql SHOW VARIABLES LIKE wait_timeout; ---------------------- | Variable_name | Value | ---------------------- | wait_timeout | 28800 | ---------------------- 1 row in set (0.01 sec)wait_timeout是会话级超时控制变量表示服务器关闭非交互连接前等待活动的秒数默认值为 28800即 8 小时。该示例同时展示了未加修饰符时的默认行为——显示当前会话生效值。示例 2使用 LIKE 与通配符%模糊匹配变量名mysql SHOW VARIABLES LIKE %imeou%; ------------------------------------------- | Variable_name | Value | ------------------------------------------- | interactive_timeout | 3600 | | net_read_timeout | 60 | | net_write_timeout | 60 | | new_planner_optimize_timeout | 3000 | | query_delivery_timeout | 300 | | query_queue_pending_timeout_second | 300 | | query_timeout | 300 | | tx_visible_wait_timeout | 10 | | wait_timeout | 28800 | ------------------------------------------- 9 rows in set (0.00 sec)%imeou%会匹配所有变量名中包含imeou的变量一次即可把与超时timeout相关的变量尽收眼底。这是日常排查「某类参数当前是什么值」最常用的写法例如-- 查看所有与内存相关的变量 SHOW VARIABLES LIKE %mem_limit%; -- 查看所有与队列query queue相关的变量 SHOW VARIABLES LIKE %query_queue%;值得留意的是%imeou%命中的变量覆盖了多个维度网络读写超时net_read_timeout/net_write_timeout、查询超时query_timeout、查询队列排队超时query_queue_pending_timeout_second、规划器超时new_planner_optimize_timeout等正好体现了系统变量的多样性。每个变量的完整语义、默认值、取值范围与引入版本都可对照 docs/en/sql-reference/System_variable.md 中的逐项说明查阅。示例 3使用 WHERE 精确匹配变量名mysql show variables where variable_name wait_timeout; ---------------------- | Variable_name | Value | ---------------------- | wait_timeout | 28800 | ---------------------- 1 row in set (0.17 sec)WHERE子句可以按结果列名过滤variable_name对应变量名列value对应取值列。相比 LIKE 只能按变量名匹配WHERE 提供了更接近 SQL 表达式的过滤能力且同样支持、、IN等常规比较写法。示例 4使用 WHERE 精确匹配变量值mysql show variables where value 28800; ---------------------- | Variable_name | Value | ---------------------- | wait_timeout | 28800 | ---------------------- 1 row in set (0.70 sec)按value过滤时StarRocks 会遍历所有变量、返回取值为28800的那些行。当你不确定「哪个变量等于某个特定值」时这种写法可以快速反查出所有取值相同的变量便于批量核对配置是否一致。GLOBAL 与 SESSION 的差异理解 GLOBAL 与 SESSION 的差异是使用 SHOW VARIABLES 的关键GLOBAL 值相当于系统的默认配置。当新连接建立时StarRocks 使用全局值来初始化该连接的会话变量。SESSION 值当前连接实际生效的值。如果会话中通过SET修改过变量则显示会话值否则回退显示全局值。不带修饰符时默认显示 SESSION 值这也是大多数交互式排查场景下的首选。对应地变量在设置侧的行为是SET var_name xxx;只作用于当前会话SET GLOBAL var_name xxx;作用于所有未来会话不含当前会话。若希望当前会话与未来会话同时生效需要分别执行两次设置SET query_mem_limit 137438953472; -- 仅当前会话生效 SET GLOBAL query_mem_limit 137438953472; -- 所有未来会话生效进阶使用技巧1. 查看 GLOBAL 层级-- 查看所有全局变量的当前值 SHOW GLOBAL VARIABLES; -- 查看全局层级的查询超时设置 SHOW GLOBAL VARIABLES LIKE query_timeout;2. 与 SET 命令配合做调优闭环典型的调优流程是先用 SHOW VARIABLES 查看当前值再用 SET 修改最后再用 SHOW VARIABLES 验证是否生效-- 查看当前查询超时 SHOW VARIABLES LIKE query_timeout; -- 会话级调大查询超时 SET query_timeout 600; -- 验证 SHOW VARIABLES LIKE query_timeout;3. 结合 SET_VAR 提示理解变量作用域除了会话级与全局级变量还支持语句级作用域。通过SET_VAR提示可以把会话变量限定在单条语句内生效例如SELECT /* SET_VAR(query_timeout 1) */ sleep(3);这种「语句内生效」的变量并不会出现在 SHOW VARIABLES 的会话结果中理解三层作用域GLOBAL → SESSION → 语句内有助于正确解读 SHOW VARIABLES 的输出含义。4. 区分仅全局生效的变量部分变量如lower_case_table_names、version、query_queue_concurrency_limit等只支持全局生效只能通过SET GLOBAL修改。对这类变量执行会话级SET会返回错误SHOW VARIABLES 的 GLOBAL 修饰符是查看它们最可靠的途径。参考阅读System variables全部系统变量的完整说明包括默认值、取值范围、引入版本与作用域SET动态设置或修改变量的配套命令源码实现VariableMgr.java变量注册、标志位与dump()取值逻辑、AstBuilder.javaSHOW VARIABLES 的语法解析入口。【免费下载链接】starrocksThe worlds fastest open query engine for sub-second analytics both on and off the data lakehouse. With the flexibility to support nearly any scenario, StarRocks provides best-in-class performance for multi-dimensional analytics, real-time analytics, and ad-hoc queries. A Linux Foundation project.项目地址: https://gitcode.com/GitHub_Trending/st/starrocks创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表