§ 为什么建议升级到 GreatSQL 8.0
本节介绍为什么要升级到 GreatSQL 8.0,以及 GreatSQL 8.0 相对 5.7 版本有哪些值得关注的优势特性。
§ GreatSQL 8.0 相对 5.7 的优势特性
GreatSQL 8.0 相对 MySQL 5.7 在性能提升、安全、功能函数、SQL 语法、SQL 优化器等多方面均有提升,以下是各个功能特性和优势特性的详细对比表:
类别 | 特性 | MySQL 5.7 | GreatSQL 8.0 | 改进提升及优势特性 |
---|---|---|---|---|
性能 | 秒级加列 | 不支持 | 通过秒级加列功能 | 有效降低停机时间,提高数据库灵活性 |
性能 | 查询优化 | 基本的查询优化 | 更多的查询优化技术,如子查询下推、索引合并等 | 更高效的查询执行计划 |
性能 | 并行查询 | 有限的并行查询支持 | 支持并行查询 | 更快的查询响应时间 |
性能 | InnoDB 性能 | 基本的 InnoDB 性能优化 | 改进的 InnoDB 性能,如更快的 DDL 操作、更高效的缓存管理 | 更高的性能和更好的响应时间 |
性能 | Redo 日志优化 | 基本功能 | 支持 Redo 日志的并行写入及临时禁用 Redo | 更高的事务处理能力 |
性能 | 性能模式 | 基本的性能模式支持 | 增强的性能模式,支持更多的监控指标 | 更详细的性能监控 |
性能 | CATS 事务控制算法 | 基于 FIFO 的事务控制算法 | 采用 Contention-Aware Transaction Scheduling (CATS) 算法,优先处理等待锁的事务来减少锁争用,提高并发性能 | 提高事务并发性能,更好的资源利用率 |
性能 | 不可见索引 | 不支持 | 支持不可见索引 | 便于性能调优,不影响现有查询 |
性能 | 倒序索引 | 不支持 | 支持倒序索引 | 便于性能调优,不影响现有查询 |
性能 | 函数索引 | 不支持 | 支持函数索引 | 便于性能调优,不影响现有查询 |
性能 | 下推优化 | 有限的下推优化 | 更多的下推优化,如 IN / NOT IN 和 EXISTS / NOT EXISTS 子查询下推 | 更高效的查询执行计划 |
性能 | Hash Join | 不支持 | 支持 Hash Join | 提升无索引时大表连接性能 |
性能 | 更多 Optimze Switch 选项 | 多个可选开关 | 支持更多可选开关(如 JOIN_INDEX / ORDER_INDEX ),提升 SQL 性能 | 提升无索引时大表连接性能 |
数据管理 | JSON 支持 | 基本功能 | 扩展的 JSON 函数 JSON 表达式索引 JSON 路径表达式 | 更强大的 JSON 处理能力 |
数据管理 | 元数据字典 | 基于 MyISAM 存储 | 基于 InnoDB 存储 | 更安全、高效和一致的元数据字典管理 |
数据管理 | 分区表 | 基本的分区表支持 | 更多的分区类型(如 LIST COLUMNS 分区)分区修剪优化 | 更灵活和高效的分区管理 |
数据管理 | 全文索引 | 仅支持 MyISAM 存储引擎的全文索引 | 支持 InnoDB 存储引擎的全文索引 | 更广泛的全文索引支持 |
数据管理 | 临时表 | 基本的临时表支持 | 支持持久化的临时表 | 更高效的临时表管理 |
数据管理 | 临时表空间 | 有限的临时表空间支持 | 支持独立的临时表空间 | 更高效的临时表管理 |
数据管理 | Clone 插件 | 不支持 | 支持本地/远程 CLONE 备份 | 提高本地/远程备份效率,提高主从复制/MGR 数据复制效率 |
数据管理 | 配置参数在线修改持久化 | 不支持 | 支持 SET PERSIST 在线修改配置参数并持久化 | 提高系统管理灵活性 |
安全性 | 角色管理 | 不支持 | 支持角色管理,简化权限管理 | 更灵活的权限管理 |
安全性 | 密码管理 | 基本的密码管理 | 新的密码验证组件,更安全 最小字符数要求 密码历史记录 | 更强的安全性 |
安全性 | 审计 | 不支持 | 增强的审计日志功能 | 更详细的审计和合规性支持 |
安全性 | 数据脱敏 | 不支持 | 增强的数据脱敏功能 | 更强的数据脱敏支持和合规性支持 |
复制 | 多源复制 | 有限的多源复制支持 | 改进的多源复制支持 | 更灵活的复制拓扑 |
复制 | GTID | 基本的 GTID 支持 | 改进的 GTID 支持,支持并行复制 | 更可靠的复制管理 |
复制 | 事务重放 | 有限的事务重放支持 | 支持事务重放,提高恢复效率 | 更快的恢复时间 |
SQL 语法 | 窗口函数 | 不支持窗口函数 | 支持窗口函数(如 ROW_NUMBER() , RANK() , LEAD() , LAG() 等) | 更复杂的查询和数据分析能力 |
SQL 语法 | 公用表表达式 (CTE) | 不支持 | 支持 CTE | 更复杂的查询和数据分析能力 |
SQL 语法 | 优化器提示 | 有限的优化器提示支持 | 支持更多的优化器提示 | 更精细的查询优化 |
SQL 语法 | 字符集和排序规则 | 有限的字符集和排序规则支持 | 支持更多的字符集和排序规则 新的默认字符集 utf8mb4 | 更广泛的字符集支持 |
SQL 语法 | 加锁语法 | 语法相对较为简单 | 支持 LOCK ... FOR SHARE / NOWAIT / SKIP LOCKED 等多种语法 | 加锁请求 SQL 语法更灵活,支持更多应用需求场景 |
SQL 语法 | EXPLAIN ANALYZE 语法 | 不支持 | 不仅显示查询的执行计划,还能提供实际执行过程中的详细性能数据,包括每个步骤的执行时间和行数 | 有效提升性能诊断和 SQL 优化效率 |
SQL 语法 | 基础语法 | 语法相对较为简单,缺少许多现代化分析功能 | 新增了多种优化的 SQL 语法,包括窗口函数、CTE、JSON 处理等 | SQL 查询更加灵活高效,支持更复杂的分析和数据操作 |
基础功能 | 系统变量 | 基本的系统变量支持 | 支持动态修改更多的系统变量 | 更灵活的配置管理 |
基础功能 | 自增列 | 基本功能 | 支持自增值持久化,并提高了自增列在主从复制场景下的性能 | 确保自增列重启安全性,提升了高并发插入时的性能,尤其是在复制环境下 |
基础功能 | GIS | 基本功能 | 支持 GeoJSON,并改进了 GIS 空间索引和函数 | 提升了对地理空间数据的处理能力 |
基础功能 | DDL 操作原子性 | 不支持 | 支持 DDL 操作原子性,DDL 操作是崩溃安全的 | 在执行 DDL 过程中更安全,避免部分失败 |
基础功能 | Trigger | 基础的功能 | 支持一个表上创建多个触发器 | 更灵活的触发器用法,提升业务便利性 |
基础功能 | 版本升级 | 手动执行 mysql_upgrade 升级 | 自动完成升级,且支持利用 MySQL Shell 进行升级前置检查 | 版本升级更灵活高效 |
基础功能 | 资源组 | 不支持 | 通过资源组功能,更精确地控制 CPU 资源的分配和使用 | 为数据库管理和性能优化提供了更强大的工具 |
GreatSQL 增强 | 高可用 - MGR 地理标签 | 不支持 | 支持利用地理标签提升多机房架构数据可靠性 | 解决多机房数据同步的问题 |
GreatSQL 增强 | 高可用 - MGR 仲裁节点 | 不支持 | 仲裁节点无需存储数据,和应用事务日志 | 可以用更低的服务器成本实现更高可用 |
GreatSQL 增强 | 高可用 - MGR 读写节点 VIP | 不支持 | 读写节点可绑定VIP | 更方便实现容灾切换方案 |
GreatSQL 增强 | 高可用 - MGR 快速单主 | 不支持 | 优化单主模式下的事务认证方式 | 在单主模式下更快,性能更高 |
GreatSQL 增强 | 高可用 - MGR 智能选主 | 不支持 | 完善自动选主机制,增加基于最新GTID判断来选主,避免自动选择没有最新GTID的节点作为新主 | 高可用切换选主机制更合理 |
GreatSQL 增强 | 高可用 - MGR 优化流控算法 | 不支持 | 优化流控算法,综合考虑大事务及认证事务队列因素 | 避免性能抖动问题 |
GreatSQL 增强 | 高可用 - MGR 记录网络开销 | 不支持 | 记录 MGR 在网络层的开销 | 便于进一步分析和提升 MGR 效率 |
GreatSQL 增强 | 高可用 - MGR 事务认证队列清理优化 | 不支持 | 优化事务认证队列清理效率 | 避免每 60 秒性能抖动风险 |
GreatSQL 增强 | 高可用 - MGR 节点状态异常判断优化 | 不支持 | 优化节点状态异常时的检查判断效率 | 增加系统服务时长 |
GreatSQL 增强 | 高可用 - MGR 节点磁盘空间爆满异常处理 | 不支持 | 节点磁盘空间爆满时,该节点主动退出 | 避免因为无法主动退出阻塞 MGR 事务认证 |
GreatSQL 增强 | 高可用 - 双主复制防回路机制 | 不支持 | 给 binlog 打标签,避免事务回路重复应用 | 避免双主复制时出现数据回路问题 |
GreatSQL 增强 | 高性能 - Rapid 引擎 | 不支持 | 支持 大规模并行、基于内存查询、高压缩比的高性能 Rapid 引擎 | 可将复杂数据分析性能提升几个数量级 |
GreatSQL 增强 | 高性能 - InnoDB 事务无锁化优化 | 不支持 | 大锁拆分及无锁化等多种优化方案 | OLTP 场景整体性能提升约 20% |
GreatSQL 增强 | 高性能 - 并行 LOAD DATA | 不支持 | 并行方式 LOAD DATA 导入数据,针对无显式定义主键场景亦有优化 | 适用于频繁导入大批量数据的应用场景,性能可提升约 20 多倍 |
GreatSQL 增强 | 高性能 - 异步删除大表 | 不支持 | 异步方式删除大表 | 提升 InnoDB 稳定性 |
GreatSQL 增强 | 高性能 - 线程池 | 仅企业版支持 | 池化方式预分配线程,提升新建连接效率 | 避免大量短连接时出现性能抖动 |
GreatSQL 增强 | 高性能 - 非阻塞式 DDL | 不支持 | 请求 DDL 锁时不再持续阻塞 | 提升整体业务系统可用性 |
GreatSQL 增强 | 高性能 - NUMA 亲和性优化 | 不支持 | 通过 NUMA 亲和性调度优化,将前端用户线程和后台线程绑定到固定 NUMA 节点上以提升线程处理性能 | TPC-C 性能提升约 10% |
GreatSQL 增强 | 高兼容 | / | 100% 完全兼容 MySQL 语法,支持大多数常见 Oracle 用法 | 提升旧业务应用系统迁移效率 |
GreatSQL 增强 | 高安全 - 国密算法 | 只支持通信国密加密 | 除通信国密加密外,也支持国密表空间加密、备份加密等 | 确保重要数据的加密安全,满足金融级用安全需求 |
GreatSQL 增强 | 高安全 - mysqldump 备份加密 | 不支持 | mysqldump 逻辑备份文件加密 | 确保重要数据的加密安全,满足金融级用安全需求 |
GreatSQL 增强 | 高安全 - Clone 备份加密 | 不支持 | Clone 物理备份文件加密 | 确保重要数据的加密安全,满足金融级用安全需求 |
GreatSQL 增强 | 高安全 - 审计 | 仅企业版支持 | 支持审计功能,并将审计日志写入数据表中,并且设置审计日志入表 | 满足不同的审计需求 |
GreatSQL 增强 | 高安全 - 数据脱敏 | 仅企业版支持 | 支持基于函数和策略的两种数据脱敏工作方式 | 保障敏感用户数据查询结果保密性 |
GreatSQL 增强 | 高安全 - 记录最后登录信息 | 不支持 | 支持记录指定用户的最后一次登入时间,便于管理员查询 | 提升数据库安全性,避免恶意尝试破解登录风险 |
GreatSQL 增强 | 其他 - Clone 压缩备份 | 不支持 | 支持 Clone 物理压缩备份 | 降低备份文件存储成本 |
GreatSQL 增强 | 其他 - Clone 增量备份 | 不支持 | 支持 Clone 物理增量备份 | 提升备份可靠性和备份文件恢复效率 |
§ 升级到 GreatSQL 8.0
想要从 MySQL / GreatSQL 5.7 升级到 GreatSQL 8.0,可以参考文档:GreatSQL 5.7升级到8.0。
§ 总结
GreatSQL 8.0 相对于 5.7 在多个方面进行了显著的改进和提升,包括性能、数据管理、安全性、复制、优化器(如不可见索引、函数索引、直方图)、SQL 语法支持(如窗口函数、CTE)等方面。这些改进使得 GreatSQL 8.0 成为一个更强大、更灵活、更安全的数据库管理系统,特别适合处理大规模和高并发的应用场景。
通过这些新特性,用户可以更高效地管理和优化数据库,提高 GreatSQL 数据库的整体可用性、性能、安全性、兼容性和可靠性。
扫码关注微信公众号