原创

mysql相关参数查询汇总

一、基础信息与全局配置

1. 查看 MySQL 版本与实例信息

SELECT @@hostname, @@version, @@version_comment;

2. 查看事务隔离级别(非常重要)

-- 当前会话 SELECT @@session.transaction_isolation; -- 全局默认 SELECT @@global.transaction_isolation;

MySQL 默认隔离级别为 REPEATABLE-READ,很多高并发写场景建议改为 READ-COMMITTED


3. 查看 SQL Mode

SELECT @@sql_mode;

常见值说明:

  • ONLY_FULL_GROUP_BY:严格 group by

  • STRICT_TRANS_TABLES:严格事务校验

  • NO_ZERO_DATE / NO_ZERO_IN_DATE:禁止非法日期


二、事务 & 锁相关参数(并发问题重点)

4. 锁等待超时时间

SHOW VARIABLES LIKE 'innodb_lock_wait_timeout';

默认一般是 50 秒,值过小容易导致 Lock wait timeout exceeded


5. 查看当前锁与死锁信息

SHOW ENGINE INNODB STATUS\G

重点关注:

  • LATEST DETECTED DEADLOCK

  • TRANSACTIONS

  • LOCK WAIT


三、排序 / 内存 / 临时表(性能 & OOM 高发区)

6. 排序缓冲区(ORDER BY 相关)

SHOW VARIABLES LIKE 'sort_buffer_size';

说明:

  • 单位:字节

  • 每个连接可能分配

  • 太小容易出现:

    Out of sort memory, consider increasing server sort buffer size


7. 连接级读缓冲

SHOW VARIABLES LIKE 'read_buffer_size'; SHOW VARIABLES LIKE 'read_rnd_buffer_size';


8. 临时表大小(GROUP BY / DISTINCT / 子查询)

SHOW VARIABLES LIKE 'tmp_table_size'; SHOW VARIABLES LIKE 'max_heap_table_size';

实际生效值 = 二者 较小值


9. 当前排序 / 临时表使用情况(状态指标)

SHOW GLOBAL STATUS LIKE 'Sort%'; SHOW GLOBAL STATUS LIKE 'Created_tmp%';

重点字段:

  • Created_tmp_disk_tables(磁盘临时表,越多越慢)

  • Sort_merge_passes(排序溢出)


四、InnoDB 核心配置(写性能 & 稳定性)

10. Buffer Pool(最重要的内存参数)

SHOW VARIABLES LIKE 'innodb_buffer_pool_size'; SHOW VARIABLES LIKE 'innodb_buffer_pool_instances';


11. redo log 相关

SHOW VARIABLES LIKE 'innodb_log_file_size'; SHOW VARIABLES LIKE 'innodb_log_buffer_size'; SHOW VARIABLES LIKE 'innodb_flush_log_at_trx_commit';

常见值说明:

  • 1:最安全(默认)

  • 2:性能更好,允许极小概率丢失


12. IO 能力评估

SHOW VARIABLES LIKE 'innodb_io_capacity'; SHOW VARIABLES LIKE 'innodb_io_capacity_max';


五、连接与并发情况

13. 最大连接数

SHOW VARIABLES LIKE 'max_connections';

14. 当前连接情况

SHOW GLOBAL STATUS LIKE 'Threads%';

常用指标:

  • Threads_connected

  • Threads_running


六、字符集与排序规则(唯一索引/字符串问题)

15. 查看默认字符集

SHOW VARIABLES LIKE 'character_set_server'; SHOW VARIABLES LIKE 'collation_server';

16. 查看表字段字符集

SHOW FULL COLUMNS FROM 表名;

utf8mb4_0900_ai_ciutf8mb3_general_ci 在比较规则上有明显差异,可能影响唯一索引判断。


七、执行计划与 SQL 排查必备

17. 查看执行计划

EXPLAIN SELECT ...;

18. MySQL 8 推荐(更真实)

EXPLAIN ANALYZE SELECT ...;

重点关注:

  • 是否 Using filesort

  • 是否 Using temporary

  • 是否命中预期索引


八、常用全局排查 SQL 汇总(速抄)

-- 当前用户 & 权限 SELECT USER(), CURRENT_USER(); SHOW GRANTS; -- 当前所有全局变量 SHOW GLOBAL VARIABLES; -- 当前所有状态指标 SHOW GLOBAL STATUS; -- 当前执行中的 SQL SHOW PROCESSLIST; SHOW FULL PROCESSLIST;


九、常见排错经验总结

  • 并发 update / 幂等 / 重试场景:优先关注事务隔离级别

  • ORDER BY + LIMIT 也很慢:优先检查索引 + sort_buffer_size

  • 线上偶发报错,单条 SQL 很快:考虑并发叠加 + 内存参数

  • 同一 SQL 不同库行为不同:先 diff 配置,再看代码

正文到此结束