(最近工作忙,已经无法适应每天都发新帖的频率了,后面会降低发帖的频率一段时间,抱歉)

还记得在2024年参加PolarDB的开发者大会,下午还为北楼的IMCI 上去说了一下我们的使用经验,李飞飞李总说PolarDB是一个插件数据库,大家理解的可能是一个版本,那个版本我是理解的,但我这里有一个别人不知道的另外的一个“插件”的含义。

随着使用的深入,我有点“爱”上为这个数据库付出心血的人们,我真心希望有人能为他们的努力和做出的奇迹鼓掌助威,不存在任何商业的利益。

本来这篇早就该写,最近有同学在问PolarDB,影响选哪个版本。这你算是问对地方了,今天我们来说说PolarDB-M的内幕,怎么选版本,与选错了是不是冤大头。(下面都是围绕PolarDB for MySQL 商业云原生版本进行论述)

第一PolarDB for MySQL的版本差异非常大,这里我将从几个方面来进行论述

1  版本本身差异 2  硬件可能存在的差异 3  与MySQL开源版本的差异

1 PolarDB 本身版本的差异

PolarDB for MySQL 目前在售的有 5.6, 5.7,8.01,8.02,共4个版本,在选择的时候,如果不是强需求,比如我就是从MySQL 5.6 5.7过来的,语句就是在8.0上过不去,那么一定起步就不要在选择5.6,5.7这两个版本了。

内核版本

兼容的开源MySQL小版本

8.0.2

8.0.18及更低的版本

8.0.1

8.0.13及更低的版

5.7

5.7.28及更低的版本

5.6

5.6.16及更低的版本

这里先回答一个问题,8.02的PolarDB FOR MySQL 就是MySQL的8.018吗,这里回答不是,不要这样想。

8.02 ,8.01 两个版本都是基于上面标称的MySQL开源的语句兼容性和功能兼容性而来的,因为这两个版本有一些在开源上的不融合,属于两个分支了,而这个分支和我们下面要说的一些事情有关。

我们这里做一个官方的文档的截图来证明此事。

MySQL []> show variables like '%polardb%'
    -> ;
+--------------------+--------------+
| Variable_name      | Value        |
+--------------------+--------------+
| polardb_cluster_id |              |
| polardb_version    | 8.0.2.2.23.1 |
+--------------------+--------------+
2 rows in set (0.012 sec)

我们通过语句来,查看当前我们使用的PolarDB的内部版本,上图展示是8.02。后面是小版本,



PolarDB 版本差异分析--外人不知道的秘密(谁是绵羊,谁是怪兽)_PostgreSQL

这里我们以8.02 版本为例,截图,这里我们看到下图,8.0.2.2.25,这说明目前PolarDB的阿里云的版本已经和MySQL的8.025基本吻合。(实际上聪明的人也可以通过这个来去选择MySQL的稳定的版本去给自己生产上用)



PolarDB 版本差异分析--外人不知道的秘密(谁是绵羊,谁是怪兽)_MySQL_02

PolarDB 版本差异分析--外人不知道的秘密(谁是绵羊,谁是怪兽)_MySQL_03

这里如果你一开始使用的是PolarDB for MySQL 5.7后续想升级到MySQL8.0那么完全可以使用大版本升级功能,直接升级到8.0的PolarDB for MySQL.



PolarDB 版本差异分析--外人不知道的秘密(谁是绵羊,谁是怪兽)_数据库_04

下面我继续,不过可能不懂的人,要开始听天书了。

在使用PolarDB的时候,注意的地方还是有的,比如硬件的不同,功能需求点的不同,以及ServerLess的不同等等,同时版本还分标准版,企业版,通用规格,独享规格,CPU架构的不同,存储的不同等等。

这里我详述一下使用3年的老炮对于阿里云PolarDB MySQL的版本选择建议

1  一定要选择主流的版本,比如CPU架构,分为X86 和 ARM,你可以这样,如果要你要薅羊毛,要便宜的,用于测试主机,完全可以考虑倚天。但如果你是商业客户,在生产上使用,我建议你目前还是应该使用主流的X86系统。(抱歉一些原因不能详述)



PolarDB 版本差异分析--外人不知道的秘密(谁是绵羊,谁是怪兽)_MySQL_05

2  到底是独享还是通用规格: 这里一定根据你的情况,如果没有特殊的需求,比如一天24小时都是高负载,那么可以考虑通用规格。(为什么我后面说,主要考虑你如果启用serverless的情况下)

3  最后是你性能的关键指标之一,磁盘的选择,磁盘一定要选择PSL5 ,这里说明如果是PolarDB for MySQL,但如果是PolarDB for PostgreSQL 那就一定要选择PSL4。(本次仅仅说POALRDB-M的原因)

这里为什么要选择PSL5,原因有三 

1  PSL5的分散点实际上更多,也就是你的数据可能下去后,并发写到多个数据节点上,性能超高,就如同你的一个工作被分了几百份,让每个磁盘都承担一点,且这些数据是1写3,也就是下发一条写入指令,你实际上是3分数据下去了,有2个副本。且这些都是硬件的控制的,有硬件的原子锁来支撑,安全高速

2  PSL5 使用了POLAR STORE,这就是我说的通过大量的超级高级的阿里云独有的硬通货 smart ssd来组件的磁盘大宇宙,可以说是磁盘界的性能怪兽。

3  他们采用了上次提到的磁盘大缓存技术,也就是你的数据实际上是在内存模拟磁盘进行处理的。(小道消息)



PolarDB 版本差异分析--外人不知道的秘密(谁是绵羊,谁是怪兽)_MySQL_06

所以安全,快是有原因的,POALRDB-M 是业界第一个以云硬件为标板,重新设计数据库架构和代码的,大怪兽。(都是弟弟,云原生没一个能打的过的),所以此时如果你选择什么云盘,那你的脑子一定是进水了。POLARDB-M 必须上PSL5。



PolarDB 版本差异分析--外人不知道的秘密(谁是绵羊,谁是怪兽)_数据库_07

PolarDB 版本差异分析--外人不知道的秘密(谁是绵羊,谁是怪兽)_PostgreSQL_08

下面咱们来说另一个POLARDB-M的秘密,如果在8.01 -8.02里面选择你选择哪个? 我这里个人建议,如果你是初学者,刚开始接触云原生,且你公司的体量不大,那么选择8.02,你一定要使用最新的SERVERLESS 怪兽技术,让你对CPU在主机中弹来弹去有一个彗星撞地球的认识。

但如果你是大量的主机上来,还是先选择8.01,并不是因为8.02不好,是因为8.02的新功能太多了,怪兽加翅膀,所以为了你迁移到POLARDB上的口碑,稳定稳定,先选择8.01。 (小声说一句,如果你的主机都想买的是8C以下的,那么8.01,8.02区别没有那么大,但如果你的主机的CPU购买的比较多 8C以上,且经常有节点CPU负载很低,比如读库负载高,主库负载低,那么你要选择8.02,且开启怪兽加翅膀的 SERVERLESS 多机共享CPU的模式,此时你的CPU将不在是一个固定在一个主机的概念,他都是你的主闲着,CPU就可以从主,飘到从上给你分担你从CPU不够的情况)看蓝色的部分。



PolarDB 版本差异分析--外人不知道的秘密(谁是绵羊,谁是怪兽)_数据库_09

另外还有一些事8.02支持的特殊功能8.01不支持,如果你有强需求,就一定要选择8.02,那些下面图上写支持的都是8.02 ,上去复杂的查询的性能一定是8.02在同配置上更好,更疯狂。(小声点说,8.02的性能优化和性能加持,比8.01强多了)



PolarDB 版本差异分析--外人不知道的秘密(谁是绵羊,谁是怪兽)_PostgreSQL_10

PolarDB 版本差异分析--外人不知道的秘密(谁是绵羊,谁是怪兽)_MySQL_11

PolarDB 版本差异分析--外人不知道的秘密(谁是绵羊,谁是怪兽)_MySQL_12

PolarDB 版本差异分析--外人不知道的秘密(谁是绵羊,谁是怪兽)_PostgreSQL_13

PolarDB 版本差异分析--外人不知道的秘密(谁是绵羊,谁是怪兽)_PostgreSQL_14

此时你还化同样的钱,在符合正常需求的情况下,还买什么8.01,5.7,5.6,去8.02冲,看看POLARDB -M 8.02还能在快一点吗。

(目前SERVERLESS 的8.02可以弹出15个从节点,已经验证过了,SQL写的烂到不能烂的可以考虑,就是那种从ORACLE 迁移到MySQL失败的项目,都可以用这个方法拯救,只要你有钱,MySQL 干死 ORACLE 也是可能的,弹呗,但前提这个MySQL的姓必须是PolarDB)



PolarDB 版本差异分析--外人不知道的秘密(谁是绵羊,谁是怪兽)_MySQL_15


PolarDB 版本差异分析--外人不知道的秘密(谁是绵羊,谁是怪兽)_数据库_16

PolarDB 版本差异分析--外人不知道的秘密(谁是绵羊,谁是怪兽)_PostgreSQL_17