運維與開發過程中,頻繁需要檢查數據庫狀態、配置、大小、編碼、連接數等信息。本文彙總 11 類最常用的查看命令,附帶實際輸出示例與解讀說明,可作為日常速查手冊。
SHOW DATABASES;
輸出:information_schema, mysql, performance_schema, test, 業務庫...
SELECT DATABASE();
-- 或
STATUS; -- 輸出中含 Current database
SHOW VARIABLES LIKE 'port';
-- 輸出:3306(預設)
USE information_schema;
SELECT CONCAT(ROUND(SUM(data_length + index_length) / 1024 / 1024, 2), ' MB') AS 'DB Size'
FROM tables
WHERE table_schema = '你的資料庫名';
-- 僅數據大小
SELECT CONCAT(ROUND(SUM(data_length) / 1024 / 1024, 2), ' MB') AS 'Data Size'
FROM tables WHERE table_schema = 'INVOICE';
-- 僅索引大小
SELECT CONCAT(ROUND(SUM(index_length) / 1024 / 1024, 2), ' MB') AS 'Index Size'
FROM tables WHERE table_schema = 'INVOICE';
SHOW VARIABLES LIKE 'character%';
SHOW VARIABLES LIKE 'collation%';
-- 或
STATUS; -- 輸出含 Server/Db/Client/Conn characterset
| 變量 | 含義 | 建議值 |
|---|---|---|
| character_set_client | 客戶端發送編碼 | utf8mb4 |
| character_set_connection | 連接層轉換編碼 | utf8mb4 |
| character_set_database | 當前庫預設編碼 | utf8mb4 |
| character_set_results | 結果集返回編碼 | utf8mb4 |
| character_set_server | 服務端預設編碼 | utf8mb4 |
| collation_connection | 連接層排序規則 | utf8mb4_general_ci |
核心原則:客戶端、連接、結果集、庫、表、列編碼**全鏈路一致**,才能避免亂碼。
SHOW TABLES;
-- 或指定庫
SELECT * FROM information_schema.tables WHERE table_schema = 'dbname';
-- 查特定表
SELECT * FROM information_schema.tables WHERE table_name = 'tablename';
SELECT DISTINCT CONCAT('USER: \'', User, '\'@\'', Host, '\';') AS query FROM mysql.user;
SHOW GRANTS FOR 'root'@'localhost';
SHOW VARIABLES LIKE 'max_connections';
-- 預設 151,生產建議調大至 1000+
SHOW STATUS LIKE 'Threads%';
| 變量 | 含義 |
|---|---|
| Threads_connected | 當前建立的連接數(每連接一線程) |
| Threads_running | 當前活躍執行查詢的線程數(非 Sleep) |
| Threads_cached | 線程緩存池中空閒線程數 |
| Threads_created | 啟動以來累計創建線程數(過大說明 thread_cache_size 偏小) |
SHOW VARIABLES LIKE 'datadir';
-- 輸出示例:/mysqldata/mysql/ 或 /var/lib/mysql/
-- 當前併發查詢
SHOW PROCESSLIST;
-- 或
SELECT * FROM information_schema.processlist WHERE COMMAND != 'Sleep';
-- 慢查詢配置
SHOW VARIABLES LIKE 'slow_query%';
SHOW VARIABLES LIKE 'long_query_time';
-- InnoDB 緩衝池狀態
SHOW ENGINE INNODB STATUS;
-- 表結構
DESC tablename;
SHOW CREATE TABLE tablename;
建議將常用命令封裝為 Shell 腳本或別名,提升日常排查效率。