Bootstrap

【MySQL】MySQL8.0新特性整理

MySQL 8.0 引入了许多新特性和改进,旨在提升性能、安全性和易用性。以下是一些主要的新特性:

1. 默认字符集和排序规则

  • 默认字符集:MySQL 8.0 的默认字符集从 latin1 更改为 utf8mb4,支持更多的字符和表情符号。
  • 排序规则:默认排序规则从 utf8_general_ci 更改为 utf8mb4_0900_ai_ci,提高了排序的准确性和性能。

2. 窗口函数(Window Functions)

  • 窗口函数:MySQL 8.0 引入了窗口函数,如 ROW_NUMBER(), RANK(), DENSE_RANK(), LEAD(), LAG() 等,使得复杂的查询变得更加简单和高效。

3. 不可见索引(Invisible Indexes)

  • 不可见索引:可以通过 ALTER TABLE ... ALTER INDEX ... INVISIBLE 使索引对查询优化器不可见,用于性能调试和优化。

4. 降序索引(Descending Indexes)

  • 降序索引:支持在创建索引时指定降序排列,如 INDEX idx (col1 DESC)

5. 持久化变量(Persisted Variables)

  • 持久化变量:使用 SET PERSIST 命令可以将系统变量持久化到配置文件中,重启后仍然有效。

6. 资源组(Resource Groups)

  • 资源组:可以为不同的线程分配不同的 CPU 资源,提高资源管理和性能优化。

7. 数据库粒度只读(Database-Level Read-Only)

  • 数据库粒度只读:可以通过 ALTER DATABASE ... READ ONLY = 1 设置数据库级别的只读模式。

8. 克隆插件(Clone Plugin)

  • 克隆插件:支持从本地或远程克隆数据,简化了数据备份和恢复的过程。

9. 快速加列(Instant Add Column)

  • 快速加列:支持在线快速添加列,只需修改元数据,大大减少了大表加列所需的时间。

10. 隐藏主键(Hidden Primary Key)

  • 隐藏主键:可以通过 sql_generate_invisible_primary_key 参数为没有显式设置主键的表创建一个隐式的主键。

11. 优化的全文搜索(Improved Full-Text Search)

  • 全文搜索:支持 n-gram 全文解析器,提高了全文搜索的灵活性和性能。

12. 通用表表达式(Common Table Expressions, CTE)

  • CTE:支持递归和非递归的 CTE,使得复杂的查询更加清晰和易于管理。

13. 优化的 DDL 操作(Optimized DDL Operations)

  • DDL 操作:支持原子化的 DDL 操作,确保了数据的一致性和完整性。

14. 增强的安全性(Enhanced Security)

  • 角色管理:引入了角色管理功能,简化了权限管理。
  • 密码策略:支持更严格的密码策略,增强了安全性。

15. 性能增强(Performance Enhancements)

  • 并行 DDL:支持并行 DDL 操作,提高了索引创建和删除的速度。
  • 双写缓冲区改进:改进了双写缓冲区(doublewrite buffer),提高了性能和可靠性。

16. 其他改进

  • binlog 事务压缩:支持使用 zstd 算法压缩 binlog 事务,减少了磁盘空间占用。
  • 分区表的改进:支持更多的分区类型和优化的分区管理。
  • GIS 增强:支持地理和空间参考系统(SRS),增强了 GIS 功能。

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;