本文將介紹 MySQL 8.0 在 Ubuntu 22.04 上的重要新特性,透過實際範例說明如何運用這些功能來提升資料庫開發與管理效率。
MySQL 8.0 概述
MySQL 8.0 是 MySQL 資料庫的重大版本更新,帶來了許多令人期待的新功能。Ubuntu 22.04 LTS 預設套件庫中包含 MySQL 8.0,讓使用者可以輕鬆體驗這些新特性。
主要新功能包括:
- 預設認證外掛變更為
caching_sha2_password - 視窗函數(Window Functions)
- 通用資料表運算式(Common Table Expressions, CTE)
- JSON 功能增強
- 不可見索引(Invisible Indexes)
- 資源群組(Resource Groups)
- 角色管理(Role-based Access Control)
- 原子性 DDL(Atomic DDL)
確認 MySQL 版本:
| |
輸出類似:
| |
預設認證外掛變更
MySQL 8.0 將預設認證外掛從 mysql_native_password 改為 caching_sha2_password,提供更強的密碼加密安全性。
查看目前認證外掛
| |
建立使用新認證外掛的使用者
| |
變更現有使用者的認證外掛
| |
視窗函數
視窗函數是 MySQL 8.0 最重要的新功能之一,允許在不使用 GROUP BY 的情況下執行聚合運算,同時保留原始資料列。
建立範例資料表
| |
ROW_NUMBER() - 資料列編號
| |
RANK() 和 DENSE_RANK() - 排名函數
| |
PARTITION BY - 分組視窗
| |
累計加總與移動平均
| |
CTE 通用資料表運算式
CTE(Common Table Expressions)讓複雜查詢更易讀、更易維護,並支援遞迴查詢。
基本 CTE 語法
| |
多重 CTE
| |
遞迴 CTE
| |
JSON 增強功能
MySQL 8.0 大幅增強了 JSON 資料類型的支援,新增多個實用函數。
建立含 JSON 欄位的資料表
| |
JSON_TABLE() - JSON 轉關聯式資料
| |
JSON 聚合函數
| |
JSON 路徑運算式增強
| |
不可見索引
不可見索引允許在不刪除索引的情況下測試移除索引對效能的影響。
建立與管理不可見索引
| |
暫時使用不可見索引
| |
資源群組
資源群組允許管理員控制執行緒的 CPU 資源分配,適用於多租戶環境。
建立資源群組
| |
使用資源群組
| |
角色管理
MySQL 8.0 引入角色管理機制,簡化權限管理流程。
建立與管理角色
| |
將角色指派給使用者
| |
查看角色資訊
| |
Atomic DDL
MySQL 8.0 支援原子性 DDL 操作,確保 DDL 語句的完整執行或完整回滾。
Atomic DDL 特性
| |
資料字典改進
| |
其他實用新功能
降序索引
| |
函數索引
| |
結論
MySQL 8.0 帶來了眾多強大的新功能,本文涵蓋的主要特性包括:
- 認證外掛:更安全的
caching_sha2_password - 視窗函數:無需 GROUP BY 即可進行聚合運算
- CTE:提升複雜查詢的可讀性,支援遞迴查詢
- JSON 增強:更完整的 JSON 操作支援
- 不可見索引:安全測試索引移除的影響
- 資源群組:精細控制 CPU 資源分配
- 角色管理:簡化權限管理流程
- Atomic DDL:確保 DDL 操作的原子性
這些功能大幅提升了 MySQL 在企業級應用中的競爭力,建議開發者善加利用這些新特性來優化資料庫設計與效能。