SHOW 系列命令是 MySQL 運維、開發、調優的「萬用鑰匙」,涵蓋數據庫/表/列/索引/權限/變量/進程/引擎/複製/錯誤等全方位元數據與運行狀態。本文整理 20 種高頻 SHOW 命令,附語法、輸出解讀、實戰場景。
| 命令 | 語法示例 | 用途 | 關鍵輸出 |
|---|---|---|---|
SHOW DATABASES | SHOW DATABASES; | 列出所有數據庫 | Database 列 |
SHOW TABLES | SHOW TABLES [FROM db_name]; | 列出庫中所有表 | Tables_in_db 列 |
SHOW COLUMNS | SHOW COLUMNS FROM tbl [FROM db]; | 顯示表列定義(同 DESC) | Field, Type, Null, Key, Default, Extra |
SHOW INDEX | SHOW INDEX FROM tbl [FROM db]; | 顯示表索引詳情 | Key_name, Seq_in_index, Column_name, Cardinality, Index_type |
SHOW TABLE STATUS | SHOW TABLE STATUS [FROM db]; | 表級統計信息 | Engine, Rows, Data_length, Index_length, Auto_increment, Create_time, Update_time, Collation |
SHOW CREATE DATABASE | SHOW CREATE DATABASE db_name; | 查看庫創建語句(含字符集/校對) | Create Database 語句 |
SHOW CREATE TABLE | SHOW CREATE TABLE tbl_name; | 查看表創建語句(含索引/外鍵/分區) | Create Table 完整 DDL |
| 命令 | 語法示例 | 用途 | 關鍵輸出 |
|---|---|---|---|
SHOW GRANTS | SHOW GRANTS FOR 'user'@'host'; | 顯示用戶權限(GRANT 語句形式) | Grants 列 |
SHOW PRIVILEGES | SHOW PRIVILEGES; | 列出服務器支持的所有權限類型 | Privilege, Context, Comment |
| 命令 | 語法示例 | 用途 | 關鍵輸出/場景 |
|---|---|---|---|
SHOW STATUS | SHOW [GLOBAL|SESSION] STATUS [LIKE 'pattern']; | 服務器狀態變量(計數器) | Threads_connected, Questions, Innodb_buffer_pool_reads, Qcache_hits 等。GLOBAL 為全局累計,SESSION 為當前連接 |
SHOW VARIABLES | SHOW [GLOBAL|SESSION] VARIABLES [LIKE 'pattern']; | 服務器配置參數 | innodb_buffer_pool_size, max_connections, sql_mode, character_set_server 等 |
SHOW PROCESSLIST | SHOW [FULL] PROCESSLIST; | 當前所有線程狀態 | Id, User, Host, db, Command, Time, State, Info。FULL 顯示完整 SQL。需 PROCESS 權限看他人進程 |
SHOW ENGINE INNODB STATUS | SHOW ENGINE INNODB STATUS\G | InnoDB 內部引擎狀態 | 事務、鎖、死鎖、緩存池、日志、插入緩存、自適應哈希索引等極詳細信息。**調優必看** |
SHOW ENGINES | SHOW ENGINES; | 可用存儲引擎及默認引擎 | Engine, Support, Comment, Transactions, XA, Savepoints |
SHOW [STORAGE] ENGINES | SHOW STORAGE ENGINES; | 同 SHOW ENGINES | - |
| 命令 | 語法示例 | 用途 |
|---|---|---|
SHOW MASTER STATUS | SHOW MASTER STATUS; | 主庫 binlog 文件名、Position、過濾規則 |
SHOW SLAVE STATUS | SHOW SLAVE STATUS\G | 從庫複製狀態:IO/SQL 線程狀態、延遲、錯誤、Relay Log 位置、GTID 執行集 |
SHOW BINARY LOGS | SHOW BINARY LOGS; | 列出所有 binlog 文件及大小 |
SHOW BINLOG EVENTS | SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT n]; | 解析 binlog 事件內容 |
SHOW RELAYLOG EVENTS | SHOW RELAYLOG EVENTS ... | 解析中繼日志事件 |
| 命令 | 語法示例 | 用途 |
|---|---|---|
SHOW WARNINGS | SHOW WARNINGS [LIMIT n]; | 上條語句產生的錯誤、警告、通知 |
SHOW ERRORS | SHOW ERRORS [LIMIT n]; | 僅顯示上條語句的錯誤(不含警告/通知) |
| 命令 | 語法示例 | 用途 |
|---|---|---|
SHOW PROCEDURE STATUS | SHOW PROCEDURE STATUS [LIKE 'pattern']; | 所有存儲過程基本信息:Db, Name, Type, Definer, Created, Modified |
SHOW FUNCTION STATUS | SHOW FUNCTION STATUS [LIKE 'pattern']; | 所有存儲函數基本信息 |
SHOW CREATE PROCEDURE | SHOW CREATE PROCEDURE db.proc_name; | 存儲過程完整定義 |
SHOW CREATE FUNCTION | SHOW CREATE FUNCTION db.func_name; | 存儲函數完整定義 |
SHOW PROCESSLIST 找長時間 State → SHOW ENGINE INNODB STATUS 看鎖等待 → EXPLAIN 分析 SQL。SHOW SLAVE STATUS\G 關注 Seconds_Behind_Master、Slave_IO_Running/Slave_SQL_Running、Last_Error。SHOW VARIABLES LIKE 'innodb%';、SHOW GLOBAL STATUS LIKE 'Innodb_buffer_pool%';。SHOW GRANTS FOR 'app_user'@'%'; 確認最小權限原則。SHOW TABLE STATUS\G 關注 Data_free(碎片)、Auto_increment(接近上限)、Rows(統計準確性)。\G 代替分號,垂直顯示寬表輸出更易讀。LIKE 'pattern' 支持 % 通配,如 SHOW VARIABLES LIKE '%buffer%';。information_schema 表提供同等功能且可 JOIN 過濾,適合腳本化采集(如 SELECT * FROM information_schema.TABLES WHERE TABLE_SCHEMA='db';)。SHOW TABLE STATUS 含 Hidden 列標識隱藏列)。熟練掌握 SHOW 命令族是 MySQL DBA 與開發者的基本功。建議收藏本文為速查表,重點熟記:SHOW PROCESSLIST、SHOW ENGINE INNODB STATUS、SHOW SLAVE STATUS、SHOW VARIABLES/STATUS、SHOW CREATE TABLE、SHOW GRANTS 六大核心命令,覆蓋 80% 日常運維診斷場景。