SHOW 是 MySQL 診斷、監控、元資料查詢的瑞士軍刀。本文系統整理 17 類高頻 SHOW 命令、參數變體、輸出解讀與實戰應用場景,作為 DBA 與開發者的桌面速查手冊。
| 命令 | 語法變體 | 核心用途 | 實戰場景 |
|---|---|---|---|
| SHOW DATABASES | SHOW DATABASES [LIKE 'pattern'] |
列出所有資料庫 | 權限審計、自動化腳本發現目標庫 |
| SHOW TABLES | SHOW TABLES [FROM db_name] [LIKE 'pattern'] |
列出當前/指定庫下所有表 | Schema 同步工具、備份腳本遍歷表 |
| SHOW COLUMNS | SHOW COLUMNS FROM tbl_name [FROM db_name] [LIKE 'pattern'] |
顯示表欄位定義(類型、鍵、預設值、註釋) | ORM 映射生成、異構遷移 Schema 對比 |
| SHOW CREATE TABLE | SHOW CREATE TABLE tbl_name |
完整建表 DDL(含引擎、字符集、分區、索引) | 版本控管、跨環境同步、文檔生成 |
| SHOW INDEX | SHOW INDEX FROM tbl_name [FROM db_name] |
索引詳情:名稱、類型、列、基數、鍵長、過濾器 | 索引效能審計、冗餘索引發現 |
| SHOW STATUS | SHOW [GLOBAL|SESSION] STATUS [LIKE 'pattern'] |
服務器狀態變數:連線、查詢、InnoDB、臨時表等計數器 | 效能基線建立、異常波動排查、監控採集 |
| SHOW VARIABLES | SHOW [GLOBAL|SESSION] VARIABLES [LIKE 'pattern'] |
配置參數當前值(運行時生效值) | 參數調優驗證、配置漂移檢測、合規審計 |
| SHOW PROCESSLIST | SHOW [FULL] PROCESSLIST |
當前所有執行緒:ID、用戶、主機、DB、命令、時間、狀態、SQL | 阻塞排查、長查詢殺殺、連線洩漏發現 |
| SHOW TABLE STATUS | SHOW TABLE STATUS [FROM db_name] [LIKE 'pattern'] |
表級統計:引擎、行數、數據/索引大小、自增值、更新時間、碎片率 | 容量規劃、碎片整理觸發、分區策略評估 |
| SHOW GRANTS | SHOW GRANTS [FOR user] |
用戶權限完整清單(等同 GRANT 語句) | 權限審計、最小權限原則驗證、合規報告 |
| SHOW PRIVILEGES | SHOW PRIVILEGES |
服務器支援的所有權限項目 | 權限模型學習、自定義角色設計參考 |
| SHOW CREATE DATABASE | SHOW CREATE DATABASE db_name |
資料庫建立 DDL(字符集、校對規則) | 跨環境 Schema 同步、字符集遷移驗證 |
| SHOW ENGINES | SHOW ENGINES / SHOW [STORAGE] ENGINES |
支援儲存引擎清單:支援事務、XA、備份、快取等特性 | 引擎選型、功能相容性驗證 |
| SHOW ENGINE INNODB STATUS | SHOW ENGINE INNODB STATUS |
InnoDB 內部狀態:事務、鎖、死鎖、插入緩衝、自適應雜湊、Redo Log、檔案 I/O | 死鎖分析、鎖爭用熱點、Redo Log 壓力、純內存診斷 |
| SHOW LOGS | SHOW LOGS |
BDB 引擎日誌(已棄用,BDB 5.1 移除) | 歷史遺留系統維護 |
| SHOW WARNINGS | SHOW WARNINGS [LIMIT n] |
最後一條語句產生的警告、錯誤、提示(含代碼、訊息、層級) | 隱式轉換檢測、數據截斷發現、嚴格模式驗證 |
| SHOW ERRORS | SHOW ERRORS [LIMIT n] |
僅顯示錯誤級別(ERROR) | 快速定位阻塞性錯誤 |
SHOW GLOBAL STATUS LIKE 'Threads_connected'; -- 全局累計
SHOW SESSION STATUS LIKE 'Last_query_cost'; -- 當前會話
SHOW VARIABLES LIKE '%buffer%'; -- 所有緩衝區參數
SHOW STATUS LIKE 'Innodb_%'; -- InnoDB 所有計數器
-- MySQL 不支援 SHOW 直接用 REGEXP,需配合 information_schema
SELECT * FROM information_schema.GLOBAL_STATUS WHERE VARIABLE_NAME REGEXP '^Innodb_';
-- 等同 SHOW TABLE STATUS,但可 JOIN、WHERE、排序
SELECT TABLE_NAME, ENGINE, TABLE_ROWS, DATA_LENGTH, INDEX_LENGTH
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'mydb' AND DATA_LENGTH > 100*1024*1024
ORDER BY DATA_LENGTH DESC;
-- 1. 找阻塞源
SHOW FULL PROCESSLIST WHERE STATE LIKE '%lock%' OR TIME > 60;
-- 2. 看 InnoDB 鎖詳情
SHOW ENGINE INNODB STATUS\G
-- 關注 TRANSACTIONS 區塊:LOCK WAIT、持有鎖、等待鎖
-- 3. 關聯表統計
SHOW TABLE STATUS FROM db LIKE 'blocked_table'\G
-- 看 Row_format、Index_length、Auto_increment 等
SHOW PROCESSLIST 無 FULL 時,Info 欄位截斷 100 字符,長 SQL 看不全 → 必加 FULLSHOW TABLE STATUS 的 TABLE_ROWS 是估算值(InnoDB 採樣統計),精確行數需 SELECT COUNT(*)SHOW VARIABLES 顯示運行時值,配置文件修改後需重啟或 SET GLOBAL 才生效SHOW ENGINE INNODB STATUS 輸出極長,建議用 \G 垂直顯示或導出文件分析熟練掌握 SHOW 家族,能讓你在無圖形化工具環境下,憑藉命令列完成 90% 的診斷與監控任務。