PolarDB for MySQL8.0.1版和8.0.2版在功能上存在一些差异,包括Warm Buffer Pool、Hash Join、弹性并行查询、执行器增强、优化器增强、分区表、多主集群(库表)、Blink Tree等方面的差异。本文介绍这两个版本的功能区别,以便您基于业务场景选择合适的版本。
版本选择建议
目前8.0.1和8.0.2均为正式发布的LTS版本,8.0.1完全兼容对应社区MySQL-8.0.13及更低的版本,8.0.2完全兼容对应社区MySQL-8.0.18及更低的版本。如下详细列举了两个版本的功能区别,您可以根据业务场景需要选择合适的版本。
功能差异对比
分类 | 功能特性 | 功能描述 | 8.0.1版 | 8.0.2版 |
数据可靠性/异地灾备 | 数据分布在两个可用区,每个可用区有3个副本,总共有6个副本。当主可用区故障时,可以在几分钟内快速恢复到备可用区。但由于两个可用区之间数据异步复制,在强制切换时,可能会丢失1秒以内的数据。 | 支持 | 支持 | |
数据库横跨三个可用区部署,其中两个可用区存储了全量的数据,称为“数据可用区”。当数据可用区故障时,系统可以自动切换到备用数据可用区,且数据0丢失。当日志可用区故障时,不影响业务正常运行。 | 支持 | 支持 | ||
全球数据库网络是由分布在全球不同地域(Region)内的多个数据库组成的一张网络。网络中所有PolarDB的数据保持同步,可以在全球范围内提供本地读取服务。跨Region复制延迟小于2秒,可以满足大部分本地访问的需求。 | 支持 | 支持 | ||
在RW出现故障时,数据库内核可以迅速检测到RW的故障。热备节点可以迅速切换成RW节点,而且立刻提供和原RW一样的性能(热备节点有热Buffer Pool)。 | 支持 | 支持 | ||
无RO、无Standby节点,用于个人学习、微型网站、中小企业的入门级产品。 | 支持 | 支持 | ||
扩展性 | 一写多读 | 一个数据库集群最多支持16个节点,其中1个写节点,15个只读节点,访问一个地址,内部自动读写分离。 | 支持 | 支持 |
一写多读下提供高性能的RO。 | 支持 | 支持 | ||
一个数据库集群每个节点均可写,可动态秒级扩缩容。 | 支持 | 支持 | ||
Serverless数据库能够使得数据库集群资源随客户业务负载动态弹降,将客户从复杂的业务资源评估和运维工作中解放出来。 | 支持 | 支持 | ||
可用性/稳定性/业务连续性 | 主备切换、升级配置、升级版本的时候,95%的连接不中断。 | 支持 | 支持 | |
只读endpoint优化 | 只读endpoint支持基于SQL的负载均衡策略;只读endpoint基于SQL负载能够支持IMCI、连接保持等功能。 | 支持 | 支持 | |
事务保护 | 主备切换、升级配置、升级版本时,大事务无需等待完成或强制回滚。 | 支持 | 支持 | |
通过提前预热备库的内存,可以避免主备切换之后新的主库负载衰退的问题,提升数据库稳定性。 | 不支持 | 支持 | ||
不论是PHP短连接并发过高,还是Java等有连接池的微服务等架构导致建立的长连接过多,均可以通过PolarDB连接池来解决。 | 支持 | 支持 | ||
PolarDB在数据库内核层进行了创新性的优化,不但能够自动识别热点行更新请求,而且将一定时间间隔内对同一数据行的更新操作进行分组,不同分组采用流水线的方式并行处理,通过这些优化,极大地提升了系统的性能。 | 支持 | 支持 | ||
在生产环境中,数据库受统计信息、运行状态、优化器改动或者能力限制,SQL语句的执行计划可能不是最优的,同时可能会发生变化,导致SQL执行效率差或者不稳定。通过Outline,可以用不修改业务SQL的方式,固定SQL语句的执行计划。 | 支持 | 支持 | ||
应用侧的并发陡增,经常导致数据库并发过高从而影响性能。这种情况下,一般都是少量的重复SQL在执行。PolarDB可以限制某一类SQL同时执行的个数,来避免单条SQL压垮整个数据库。 | 支持 | 支持 | ||
快速启动优化。 | 支持 | 支持 | ||
RO规格不同 | 支持不同规格的只读节点。 | 支持 | 支持 | |
闪回查询 | 通过闪回查询(Flashback Query)功能,您可以高效查询集群、数据库、数据表在过去某个时间点的信息。 | 支持 | 支持 | |
大吞吐写入/更新 | PolarDB重构了InnoDB的事务系统,由原来的基于活跃事务数据的事务系统,变为基于提交时间序(CTS)的事务系统,大幅度提升了读写混合场景下的性能,同时支持了全局严格强一致/MPP等功能的跨节点事务一致性。 | 支持 | 支持 | |
PolarTrans事务系统利用提交时间戳技术CTS和RDMA网络,在内核层面提供全局一致性(高性能模式)服务,保证发往集群任意副本的读请求都可以获得强一致性的结果。 | 支持 | 支持 | ||
REDO IO Cache 优化 | 计算存储针对云盘IO特征的关键路径优化,增强业务吞吐量。 | 支持 | 支持 | |
Blink Tree | 降低B+Tree index锁冲突,大幅提高structure modification operations(SMO)并行度及B+Tree并发读写性能。 | 支持 | 支持 | |
DDL | 包括秒级加字段、并行DDL、DDL IO性能优化、Faster TRUNCATE/DROP TABLE和针对在DDL IO路径上的优化,包括DDL预读、DDL异步IO和DDL多路归并排序。 | 支持 | 支持 | |
包括非阻塞DDL、DDL物理复制优化、并行元数据锁同步、防止只读节点上长事务阻塞DDL操作。 | 支持 | 支持 | ||
PolarDB支持回收站(Recycle Bin)功能,用于将删除的表临时转移到回收站,并且可以自定义删除表的保留时间,方便找回数据。 | 支持 | 支持 | ||
HTAP & 复杂/分析查询 | 面向OLAP场景大数据量复杂查询。通过列存索引,PolarDB for MySQL版实现了一体化的实时事务处理和实时数据分析的能力,成为一站式HTAP数据库产品解决方案。通过一套数据库系统,即可满足业务的OLTP及OLAP需求。 | 支持 | 支持 | |
Hash Join | 支持Hash Join,基于代价选择Hash Join而不是社区原有的原始替换方案,支持Parallel Hash Join,并实现了执行中的动态Bloom Filter构建,进一步提升性能。 | 不支持 | 支持 | |
单机并行查询 | 让一条Query可以运行在多个CPU核上,利用并行化的能力加速,TPC-H中70%以上的Case,提速平均超过10倍。 | 支持 | 支持 | |
打通节点间的计算资源,突破单实例内多线程并行的扩展瓶颈,降低单点争抢,并实现资源的均衡利用。基于多节点分组能力实现业务负载的物理隔离,结合弹性降低业务成本。 | 不支持 | 支持 | ||
Partial Result Cache、Bloom Filter等算子能力增强。 | 不支持 | 支持 | ||
join谓词下推,having谓词下推。 | 不支持 | 支持 | ||
outer join消除。 | 支持 | 支持 | ||
IN-list 转semi-join。 | 不支持 | 支持 | ||
基于Window函数和基于Derived的子查询解关联;基于代价的优化器改写。 | 不支持 | 支持 | ||
缓存SQL语句的执行计划信息,以缩短查询优化时间,提升SQL语句的查询性能。 | 支持 | 支持 | ||
PolarDB for MySQL提供的SQL Trace功能,用于跟踪SQL语句的执行信息,如:执行计划和执行统计信息(包括扫描行数、执行时间等),可以帮助您快速地发现因执行计划变更而引发的性能变化,并统计当前集群中占用内存最多的查询语句。 | 支持 | 支持 | ||
统计信息增强 | 通过用户表更新量,监控统计信息状态,按需重新收集统计信息。此外支持定时定点启动、按需启动、按需取消等功能。减少因为统计信息更新对用户实例带来的非预期压力。 | 支持 | 支持 | |
针对社区Query Cache在并发、内存管理、可能导致系统性能大幅下降上的不足,Fast Query Cache支持高并发、内存动态回收、自适应缓存。 | 支持 | 支持 | ||
支持跨实例访问,在实例A中用SQL查询远程实例B中的数据,支持远程OSS的csv/orc访问。 | 支持 | 支持 | ||
分区表 | 对标Oracle支持全量二级分区,INTERVAL间隔分区,混合分区,List Default HASH,分区性能增强等。 | 不支持 | 支持 | |
支持不同分区创建不同索引。 | 不支持 | 支持 | ||
PolarDB for MySQL引擎支持在分区表上创建全局二级索引(Global Secondary Index,简称GSI)。使用全局二级索引可以实现透明分区表,即您可以像使用单表一样使用分区表,大大减少分区键对分区表的使用限制。 | 不支持 | 支持 | ||
数据压缩/归档/加密 | 表级压缩 | 对于指定的表,支持显著优于MySQL官方的压缩能力,通过压缩降低数据的存储成本。 | 支持 | 支持 |
L2PC | Bufferpool 二级缓存。 | 不支持 | 支持 | |
提供了超大存储容量,可以同时作为多个业务历史数据的汇聚地,以方便对所有历史数据进行集中存储和管理,支持XEngine和InnoDB混启动。 | 支持 | 支持 | ||
冷数据管理 | 为了降低数据存储成本,PolarDB for MySQL版支持将低频使用的冷数据归档到OSS对象存储中。 | 支持归档表 | 支持归档分区和表 | |
其他 | PolarDB for AI功能通过一系列MLOps和内置的模型解决了数据、特征和模型的割裂状态,实现了基于数据库的数据智能的一站式服务。 | 支持 | 支持 | |
国产化兼容/性能优化 | ARM兼容性/性能优化。 | 支持 | 支持 | |
RO支持创建用户内存临时表 | 可以在RO中支持memory/myisam storage的用户临时表。 | 支持 | 支持 | |
透明数据加密 (TDE) 技术帮助保护用户数据库。 | 支持 | 支持 | ||
Readable Protobuf | 针对存储在数据库中经过Protobuf序列化的Blob类型的字段,您可以在对应的字段上配置Protobuf schema,并通过可视化函数PROTO_TO_JSON(blob_field)来读取数据,也可以使用JSON_EXTRACT()函数来抽取数据中的部分信息用于创建索引或者虚拟列。 | 支持 | 支持 | |
版本兼容能力 | 对下游数据库BINLOG同步新增语法的兼容能力。 | 支持 | 支持 |