MySQL 5.7 帶來革命性更新,本文從五大維度系統梳理核心新特性,並給出生產遷移關鍵配置建議。
ALTER USER 'user'@'host' PASSWORD EXPIRE INTERVAL 90 DAY;ALTER USER 'user'@'host' ACCOUNT LOCK/UNLOCK;CREATE TABLE t1 (jdoc JSON);
INSERT INTO t1 VALUES('{"key1":"value1","key2":"value2"}');
SELECT jdoc->>'$.key1'; -- 提取標量值
SELECT JSON_EXTRACT(jdoc, '$.key1');
JSON_EXTRACT, JSON_SET, JSON_ARRAY, JSON_MERGE 等)CREATE TABLE triangle (
sidea DOUBLE, sideb DOUBLE,
area DOUBLE AS (sidea * sideb / 2) -- VIRTUAL(預設)
);
INSERT INTO triangle (sidea, sideb) VALUES (3,4);
SELECT * FROM triangle; -- area 自動計算為 6
ALTER TABLE triangle ADD INDEX idx_area(area); — 應用層無法實現SELECT * FROM sys.schema_redundant_indexes; -- 冗餘索引
SELECT * FROM sys.schema_unused_indexes; -- 未用索引
SELECT * FROM sys.statements_with_full_table_scans; -- 全表掃描 SQL
performance_schema ≈ /proc,sys ≈ vmstatinnodb_buffer_pool_size 必須是 chunk_size × instances 倍數,否則自動向上調整ALTER TABLE t1 ALGORITHM=INPLACE, CHANGE COLUMN c1 c1 VARCHAR(255);
| 領域 | 關鍵改進 | 效益 |
|---|---|---|
| 臨時表 | 新臨時表空間、DDL 不持久化元資料、DML 不寫 redo、關閉 change buffer | 大幅降低臨時表 I/O |
| 只讀事務 | 預設視為只讀,寫操作才轉普通;不分配事務 ID、不分配回滾段、減少鎖競爭 | OLTP 讀密集場景顯著提升 |
| 連線建立 | THD/VIO 初始化下發至工作線程 | 短連線高併發場景加速 |
| 並行複寫 | 基於組提交的邏輯時鐘並行(LOGICAL_CLOCK):同組提交事務無衝突可並行回放 | 複寫延遲徹底解決 |
關鍵配置:slave_parallel_type=LOGICAL_CLOCK(預設 DATABASE 僅庫級並行,效果有限)
innodb_buffer_pool_chunk_size(預設 128M)× innodb_buffer_pool_instances 必須整除 innodb_buffer_pool_size,否則實際分配會變大slave_parallel_type=LOGICAL_CLOCKMySQL 5.7 是里程碑版本,生產環境強烈建議升級並啟用新特性。