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

MySQL 5.7 新特性全景解析:安全、靈活、易用、可用、性能五大維度 20+ 改進詳解

     編輯:MySQL 綜合教學

MySQL 5.7 新特性全景解析:安全、靈活、易用、可用、性能五大維度 20+ 改進詳解

MySQL 5.7 帶來革命性更新,本文從五大維度系統梳理核心新特性,並給出生產遷移關鍵配置建議。

1. 安全性大幅增強

  • root 初始隨機密碼:安裝完成自動生成,不再預設空密碼
  • 移除 test 資料庫:預設不建立,若手動建立可受權限控制
  • SSL 預設啟用:連線預設加密,配置更簡單
  • 密碼過期策略:ALTER USER 'user'@'host' PASSWORD EXPIRE INTERVAL 90 DAY;
  • 帳號鎖定/解鎖:ALTER USER 'user'@'host' ACCOUNT LOCK/UNLOCK;

2. 靈活性:JSON 與 Generated Column

2.1 原生 JSON 支援 (5.7.8+)

CREATE TABLE t1 (jdoc JSON);
INSERT INTO t1 VALUES('{"key1":"value1","key2":"value2"}');
SELECT jdoc->>'$.key1';  -- 提取標量值
SELECT JSON_EXTRACT(jdoc, '$.key1');
  • 儲存為 BLOB,Server 層提供豐富函數(JSON_EXTRACT, JSON_SET, JSON_ARRAY, JSON_MERGE 等)
  • 優於 MongoDB:混合結構化/非結構化資料 + 完整 ACID 事務
  • MyISAM/InnoDB 皆支援

2.2 Generated Column (虛擬/儲存欄位)

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
  • VIRTUAL:不佔磁碟,讀取時即時計算(預設)
  • STORED:寫入時計算並持久化,佔空間但讀取快
  • 可建立索引! ALTER TABLE triangle ADD INDEX idx_area(area); — 應用層無法實現

3. 易用性:Sys Schema 與 客戶端改進

  • Ctrl+C 不再退出客戶端:只中斷當前語句,保持會話
  • EXPLAIN FOR CONNECTION:分析正在執行的 SQL(DBA 神器)
  • Performance Schema 擴充:記憶體用量、MDL 鎖、儲存過程監控
  • Sys Schema (5.7.7+):將 performance_schema 封裝為即用型 View/Function/Procedure
    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 ≈ vmstat

4. 可用性:線上操作無需重啟

  • 線上修改複寫過濾規則:停 SQL Thread → 修改 → 啟動 SQL Thread
  • 線上調整 Buffer Pool 大小:引入 Chunk(預設 128MB),以 Chunk 為單位擴縮容
    注意:innodb_buffer_pool_size 必須是 chunk_size × instances 倍數,否則自動向上調整
  • Online DDL 擴充:重命名索引、修改 VARCHAR 長度無需重建表
    ALTER TABLE t1 ALGORITHM=INPLACE, CHANGE COLUMN c1 c1 VARCHAR(255);
  • 線上啟用 GTID:無需停機升級複寫架構

5. 性能:多項底層優化

領域關鍵改進效益
臨時表新臨時表空間、DDL 不持久化元資料、DML 不寫 redo、關閉 change buffer大幅降低臨時表 I/O
只讀事務預設視為只讀,寫操作才轉普通;不分配事務 ID、不分配回滾段、減少鎖競爭OLTP 讀密集場景顯著提升
連線建立THD/VIO 初始化下發至工作線程短連線高併發場景加速
並行複寫基於組提交的邏輯時鐘並行(LOGICAL_CLOCK):同組提交事務無衝突可並行回放複寫延遲徹底解決

關鍵配置:slave_parallel_type=LOGICAL_CLOCK(預設 DATABASE 僅庫級並行,效果有限)

遷移關鍵提醒

  1. innodb_buffer_pool_chunk_size(預設 128M)× innodb_buffer_pool_instances 必須整除 innodb_buffer_pool_size,否則實際分配會變大
  2. 並行複寫必須設 slave_parallel_type=LOGICAL_CLOCK
  3. 建議使用已調優的雲資料庫服務(如網易蜂巢 RDS)直接獲得最佳配置

MySQL 5.7 是里程碑版本,生產環境強烈建議升級並啟用新特性。

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