马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
1. 性能改进
1.1 窗口函数(Window Functions)
- MySQL 8.0:
- 支持窗口函数,如 ROW_NUMBER()、RANK()、DENSE_RANK()、LEAD()、LAG() 等。
- 示例:
- SELECT id, value, ROW_NUMBER() OVER (PARTITION BY category ORDER BY value DESC) AS rank
- FROM my_table;
复制代码 - 窗口函数可以简化复杂查询,制止多层嵌套子查询。
- MySQL 5.7:
- 不支持窗口函数,需通过子查询或复杂 JOIN 实现雷同功能。
1.2 通用表表达式(CTE)
- MySQL 8.0:
- 支持递归和非递归的通用表表达式(CTE)。
- 示例:
- WITH RECURSIVE cte AS (
- SELECT 1 AS n
- UNION ALL
- SELECT n + 1 FROM cte WHERE n < 10
- )
- SELECT * FROM cte;
复制代码 - CTE 进步复杂查询的可读性和维护性。
- MySQL 5.7:
1.3 索引优化
- MySQL 8.0:
- 支持 隐蔽索引(Invisible Indexes),可以暂时禁用索引而不删除。
- ALTER TABLE my_table ALTER INDEX idx_name INVISIBLE;
复制代码 - 支持 降序索引(Descending Indexes),优化 ORDER BY column DESC 查询。
- CREATE INDEX idx_name ON my_table (column DESC);
复制代码
- MySQL 5.7:
2. JSON 功能增强
2.1 JSON 操作符和函数
- MySQL 8.0:
- 新增 JSON 操作符 ->>,替代 JSON_UNQUOTE(JSON_EXTRACT())。
- SELECT json_column->>'$.key' FROM my_table;
复制代码 - 支持 JSON 路径表达式(JSON_PATH),增强 JSON 数据查询能力。
- 新增函数:
- JSON_TABLE():将 JSON 数据转换为表格情势。
- JSON_MERGE_PATCH():合并 JSON 文档。
- JSON_STORAGE_SIZE():返回 JSON 数据的存储大小。
- MySQL 5.7:
- JSON 功能较为底子,仅支持 JSON_EXTRACT()、JSON_ARRAY()、JSON_OBJECT() 等。
3. 安全性改进
3.1 默认身份验证插件
- MySQL 8.0:
- 默认使用 caching_sha2_password 插件,提供更强的密码加密。
- 注意:旧客户端可能不兼容,需升级或显式修改插件:
- ALTER USER 'user'@'host' IDENTIFIED WITH mysql_native_password BY 'password';
复制代码
- MySQL 5.7:
- 默认使用 mysql_native_password 插件。
3.2 角色管理
- MySQL 8.0:
- 支持角色(Roles),简化权限管理。
- CREATE ROLE 'read_only';
- GRANT SELECT ON db.* TO 'read_only';
- GRANT 'read_only' TO 'user'@'host';
复制代码
- MySQL 5.7:
3.3 密码战略
- MySQL 8.0:
- 支持密码逾期战略、密码复用限定、密码强度检查等。
- SET GLOBAL validate_password.policy = STRONG;
复制代码
- MySQL 5.7:
4. 数据字典
- MySQL 8.0:
- 重构数据字典,将系统表(如 information_schema)存储在 InnoDB 引擎中。
- 支持 原子 DDL 操作(Atomic DDL),DDL 操作要么完全成功,要么回滚。
- MySQL 5.7:
- 数据字典存储在 MyISAM 表中,不支持原子 DDL。
5. 字符集与编码
- MySQL 8.0:
- 默认字符集从 latin1 改为 utf8mb4,全面支持 Unicode(包罗表情符号)。
- 支持 utf8mb4_0900_ai_ci 校对规则,提供更正确的排序和比力。
- MySQL 5.7:
- 默认字符集为 latin1,需手动修改为 utf8mb4。
6. 资源管理
- MySQL 8.0:
- 支持资源组(Resource Groups),可限定 CPU 和线程优先级。
- CREATE RESOURCE GROUP my_group TYPE = USER VCPU = 0-1 THREAD_PRIORITY = 5;
- SET RESOURCE GROUP my_group FOR thread_id;
复制代码
- MySQL 5.7:
7. InnoDB 改进
- MySQL 8.0:
- 支持 原子 DDL(Atomic DDL),DDL 操作要么完全成功,要么回滚。
- 自增列(AUTO_INCREMENT)持久化,重启后不会重置。
- 支持并行构建全文索引。
- MySQL 5.7:
8. 设置参数厘革
- MySQL 8.0:
- 移除或弃用部分旧参数(如 query_cache_type、innodb_file_format)。
- 新增参数(如 innodb_dedicated_server 自动设置 InnoDB 内存)。
- MySQL 5.7:
9. 备份与恢复
- MySQL 8.0:
- 支持 备份锁(Backup Lock),允许在线备份期间实行 DML 操作(仅壅闭 DDL)。
- LOCK INSTANCE FOR BACKUP;
- UNLOCK INSTANCE;
复制代码
- MySQL 5.7:
10. 移除的功能
- MySQL 8.0:
- 移除 Query Cache(查询缓存),因多核扩展性题目。
- 移除 password() 函数,改用 SHA2 加密。
- MySQL 5.7:
- 支持 Query Cache 和 password() 函数。
11. 性能模式(Performance Schema)
- MySQL 8.0:
- 增强性能模式,支持更多监控指标(如事务、锁、内存使用等)。
- MySQL 5.7:
12. 优化器改进
- MySQL 8.0:
- 支持 直方图统计(Histogram Statistics),提拔复杂查询的实行筹划选择。
- 支持 跳过索引扫描(Skip Scan Index Access)。
- MySQL 5.7:
13. 复制与高可用
- MySQL 8.0:
- 增强 Group Replication(组复制)的性能和稳固性。
- 支持 并行复制(基于 WriteSet 的多线程复制)。
- 默认启用二进制日志的校验和(binlog_checksum=CRC32)。
- MySQL 5.7:
14. 事务与隔离级别
- MySQL 8.0:
- 默认事务隔离级别为 REPEATABLE READ(与 5.7 同等)。
- 支持 NOWAIT 和 SKIP LOCKED 选项,优化锁竞争场景。
- SELECT * FROM my_table FOR UPDATE NOWAIT;
复制代码
- MySQL 5.7:
- 不支持 NOWAIT 和 SKIP LOCKED。
15. 版本支持
- MySQL 5.7:
- 已于 2023 年 10 月结束标准支持,进入扩展支持阶段。
- MySQL 8.0:
升级注意事项
- 兼容性题目:
- 检查客户端是否支持 caching_sha2_password。
- 确保应用代码兼容 MySQL 8.0 的关键字和保留字厘革(如 RANK、SYSTEM)。
- 性能调优:
- 备份与测试:
总结
MySQL 8.0 在性能、安全性、功能扩展性方面均有明显提拔,发起新项目直接使用 8.0 版本。对于现有 5.7 系统,需根据业务需求评估升级本钱和收益,确保兼容性和稳固性。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |