SHOW 是 MySQL 內建檢視中繼資料、運行狀態的瑞士刀,掌握常用變體可大幅提升診斷效率。
SHOW ERRORS;:僅顯示最後一條語句的錯誤。SHOW WARNINGS;:顯示最後一條語句的錯誤、警告、通知。SHOW ENGINES;:列出所有支援引擎及預設引擎。SHOW ENGINE INNODB STATUS;:InnoDB 詳細運行狀態(鎖、死鎖、緩衝區、Undo Log 等)。SHOW LOGS;:BDB 引擎日誌(極少用)。SHOW VARIABLES [LIKE 'pattern'];:系統配置參數(靜態/動態)。SHOW STATUS [LIKE 'pattern'];:運行時計數器(連線數、查詢數、緩衝區命中等)。SHOW DATABASES;:所有資料庫名稱。SHOW TABLES [FROM db_name];:目前/指定資料庫所有表。SHOW TABLE STATUS [FROM db_name];:每表詳細資訊(引擎、列數、資料長度、索引長度、自增值、更新時間等)。SHOW COLUMNS FROM tbl_name [FROM db_name]; / DESCRIBE tbl_name;:欄位定義。SHOW INDEX FROM tbl_name;:索引詳情(基數、選擇性、前綴長度等)。SHOW CREATE DATABASE db_name;:建庫 SQL。SHOW CREATE TABLE tbl_name;:建表 SQL(含分區、引擎、字元集等完整定義)。SHOW PRIVILEGES;:伺服器支援的權限項目。SHOW GRANTS FOR 'user'@'host';:特定使用者權限(輸出同 GRANT 語法)。SHOW PROCESSLIST;:目前所有執行緒(Id、User、Host、db、Command、Time、State、Info)。PROCESS 權限可見全庫(含他人查詢文本)。KILL [CONNECTION | QUERY] thread_id;:終止進程/查詢。-- 找出執行超過 60 秒的查詢
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST
WHERE TIME > 60 AND COMMAND = 'Query';
-- 查看 InnoDB 鎖等待
SHOW ENGINE INNODB STATUS\G -- 關注 LATEST DETECTED DEADLOCK 與 TRANSACTIONS 區塊