MySQL是大型架构核心,下面我详解MySQL DBA命令@mikechen
1. SHOW DATABASES —— 查看数据库
SHOW DATABASES;
查看当前 MySQL 实例中的数据库。
2. SHOW TABLE STATUS —— 查看表状态
SHOW TABLE STATUS;
查看表的详细信息,包括:
- 表大小
- 行数
- 存储引擎
- 创建时间
- 更新时间
- 数据长度
- 索引长度
也可以:
SHOW TABLE STATUS FROM shop;
3. SHOW FULL PROCESSLIST —— 查看数据库连接
SHOW FULL PROCESSLIST;
这是 DBA 排查 MySQL 问题非常重要的命令。
重点关注:
Id
User
Host
db
Command
Time
State
Info
例如发现某个 SQL 长时间处于:
Locked
Waiting for table metadata lock
Sending data
就需要进一步排查。
4. SHOW ENGINE INNODB STATUS —— 查看InnoDB状态
SHOW ENGINE INNODB STATUS\G
这是 MySQL DBA 非常核心的诊断命令。
可以查看:
- 事务
- 锁
- 死锁
- Buffer Pool
- I/O
- 日志
- 信号量
尤其是排查 InnoDB 死锁 时非常常用。
5. SHOW VARIABLES —— 查看MySQL配置
SHOW VARIABLES;
查看 MySQL 当前配置。
例如:
SHOW VARIABLES LIKE 'max_connections';
查看最大连接数:
SHOW VARIABLES LIKE 'innodb_buffer_pool_size';
查看 InnoDB Buffer Pool:
SHOW VARIABLES LIKE 'slow_query_log';
查看慢查询日志是否开启。
6. SHOW STATUS —— 查看MySQL运行状态
SHOW STATUS;
查看 MySQL 当前运行状态。
例如:
SHOW STATUS LIKE 'Threads_connected';
查看当前连接数。
SHOW STATUS LIKE 'Threads_running';
查看正在执行的线程数。
SHOW STATUS LIKE 'Questions';
查看服务器接收的查询请求数量。
7. EXPLAIN —— 分析SQL执行计划
EXPLAIN
SELECT *
FROM user
WHERE name = '张三';
这是 DBA / 开发人员进行 SQL性能优化 最核心的命令之一。
重点关注:
type
possible_keys
key
rows
Extra
例如:
type = ALL
通常意味着全表扫描,需要进一步检查索引设计和 SQL。
MySQL 8.0 还可以使用:
EXPLAIN ANALYZE
SELECT ...
对实际执行过程进行分析。
8. SHOW INDEX —— 查看索引
SHOW INDEX FROM user;
可以查看:
- 索引名称
- 索引字段
- 索引类型
- 唯一性
- 索引基数
- 索引顺序
例如:
SHOW INDEX FROM user WHERE Key_name = 'idx_name';
排查 SQL 慢、索引失效、索引设计问题时非常常用。
9. SHOW CREATE TABLE —— 查看完整建表语句
SHOW CREATE TABLE user\G
相比 DESC,这个命令能够看到更加完整的表定义。
包括:
- 字段
- 主键
- 索引
- 唯一约束
- 外键
- 存储引擎
- 字符集
- 排序规则
例如:
SHOW CREATE TABLE user;
这是 DBA 排查表结构、索引和字符集问题时非常实用的命令。
以上