show variables用于查看mysql服务器当前生效的配置参数,包括启动加载的静态值和动态修改后的运行时值;支持like模糊匹配(如'%buffer%')或where子句筛选,但不标明参数来源,需结合my.cnf或mysqld --verbose --help确认。

MySQL 中查服务器配置参数用 SHOW VARIABLES
MySQL 不提供统一的系统视图来暴露所有配置,SHOW VARIABLES 是最直接、兼容性最好的方式。它返回的是当前生效的运行时参数(包括启动时加载的配置文件值和动态修改后的值)。
常见误操作是只执行 SHOW VARIABLES 而不加过滤,结果返回 500+ 行,难以定位关键项。建议配合 LIKE 精确匹配:
SHOW VARIABLES LIKE 'max_connections';-
SHOW VARIABLES LIKE '%buffer%';—— 注意通配符位置,%在前后都有效 -
SHOW VARIABLES WHERE Variable_name IN ('innodb_buffer_pool_size', 'query_cache_type');(MySQL 5.7+ 支持WHERE子句)
注意:SHOW VARIABLES 查到的是会话级或全局级参数,但不会告诉你这个值来自配置文件还是运行时 SET GLOBAL 修改。要确认来源,需比对 my.cnf 或 mysqld --verbose --help 输出。
PostgreSQL 中查配置必须走 pg_settings 系统视图
PostgreSQL 没有类似 SHOW VARIABLES 的语法,所有配置都通过 pg_settings 视图暴露,字段更丰富,也更容易判断参数状态。
关键字段包括:name(参数名)、setting(当前值)、boot_val(启动时默认值)、reset_val(上次 RESET 后的值)、source(来源,如 configuration file、command line、override)。
SELECT name, setting, source FROM pg_settings WHERE name = 'shared_buffers';-
SELECT * FROM pg_settings WHERE source = 'configuration file';—— 查哪些参数被显式写在postgresql.conf里 - 修改后未重载配置?看
source是否为postmaster(表示需重启)或client(表示已生效)
注意:pg_settings 默认只对超级用户可见;普通用户只能看到部分安全参数,且 setting 值可能被权限限制为 <hidden></hidden>。
SQL Server 用 sys.configurations 查服务器级别配置
SQL Server 的配置参数存储在系统视图 sys.configurations 中,每行代表一个服务器范围的选项(对应 sp_configure 可管理项)。
SELECT name, value, value_in_use, description FROM sys.configurations WHERE name LIKE '%memory%';-
value是你刚用sp_configure设置但尚未生效的值;value_in_use才是当前实际生效的值 - 某些参数(如
show advanced options)必须先启用,才能看到其他高级配置项
注意:不是所有 SQL Server 配置都能通过此视图查到,比如某些启动参数(-T 跟踪标志)、实例服务账户、端口号等需结合 SERVERPROPERTY() 或 Windows 注册表/服务配置获取。
跨数据库通用提醒:别混淆“配置参数”和“运行状态”
很多用户搜“数据库配置”却查到 SHOW STATUS(MySQL)、pg_stat_database(PG)、sys.dm_os_performance_counters(SQL Server),这些返回的是实时运行指标(如连接数、缓存命中率),不是配置参数本身。
-
SHOW VARIABLES/pg_settings/sys.configurations→ 回答“我设了什么?” -
SHOW STATUS/pg_stat_*/sys.dm_*→ 回答“现在跑得怎么样?”
真正要验证某参数是否生效,不能只看配置值,得结合行为验证:比如改了 max_connections,就尝试建立第 N+1 个连接看是否拒绝;调大 work_mem 后,观察 EXPLAIN 是否减少磁盘排序。











