首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL SHOW 命令大全:17 種常用語法與實戰場景速查表

     編輯:MySQL 綜合教學

SHOW 是 MySQL 診斷、監控、元資料查詢的瑞士軍刀。本文系統整理 17 類高頻 SHOW 命令、參數變體、輸出解讀與實戰應用場景,作為 DBA 與開發者的桌面速查手冊。

17 大類 SHOW 命令完整清單

命令語法變體核心用途實戰場景
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) 快速定位阻塞性錯誤

進階使用技巧

1. GLOBAL vs SESSION 作用域


SHOW GLOBAL STATUS LIKE 'Threads_connected';  -- 全局累計
SHOW SESSION STATUS LIKE 'Last_query_cost';   -- 當前會話

2. 模糊匹配與正則過濾


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_';

3. 結合 information_schema 實現可程式化查詢


-- 等同 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;

4. 實戰組合拳:阻塞排查三步走


-- 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 看不全 → 必加 FULL
  • SHOW TABLE STATUS 的 TABLE_ROWS 是估算值(InnoDB 採樣統計),精確行數需 SELECT COUNT(*)
  • SHOW VARIABLES 顯示運行時值,配置文件修改後需重啟或 SET GLOBAL 才生效
  • SHOW ENGINE INNODB STATUS 輸出極長,建議用 \G 垂直顯示或導出文件分析

熟練掌握 SHOW 家族,能讓你在無圖形化工具環境下,憑藉命令列完成 90% 的診斷與監控任務。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved