MySQL历史变迁-MySQL版本选择

Time:2023/05/14 16:07:21   Click:     版本所有:做网站  版权所有,未经许可严禁转载

大家可能也发现了,我最近在死磕MySQL了。MySQL应该是我们用的最多的关系型数据库了。因为工作需要,基础架构开发数据库多版本支持是绕不开的,今天好好整理了一下发现,mysql也不学好,版本从5.7大跨步进入8.0。那都有哪些版本,分别有什么改变呢?这就是本文要说的事情。

MySQL版本演变史

下面仅从产品特性的角度梳理其发展过程中的里程碑事件。

1995年,MySQL 1.0发布,仅供内部使用。 1996年,MySQL 3.11.1发布,直接跳过了MySQL 2.x版本。 1999年,MySQL AB公司成立。同年,发布MySQL 3.23,该版本集成了Berkeley DB存储引擎。该引擎由Sleepycat公司开发,支持事务。在集成该引擎的过程中,对源码进行了改造,为后续可插拔式存储引擎架构奠定了基础。 2000年,ISAM升级为MyISAM存储引擎。同年,MySQL基于GPL协议开放源码。 2002年,MySQL 4.0发布,集成了后来大名鼎鼎的InnoDB存储引擎。该引擎由Innobase公司开发,支持事务,支持行级锁,适用于OLTP等高并发场景。 2005年,MySQL 5.0发布,开始支持游标,存储过程,触发器,视图,XA事务等特性。同年,Oracle收购Innobase公司。 2008年,Sun以10亿美金收购MySQL AB。同年,发布MySQL 5.1,其开始支持定时器(Event scheduler),分区,基于行的复制等特性。 2009年,Oracle以74亿美金收购Sun公司。 2010年,MySQL 5.5发布,其包括如下重要特性及更新。 InnoDB代替MyISAM成为MySQL默认的存储引擎。 多核扩展,能更充分地使用多核CPU。 InnoDB的性能提升,包括支持索引的快速创建,表压缩,I/O子系统的性能提升,PURGE操作从主线程中剥离出来,Buffer Pool可拆分为多个Instances。 半同步复制。 引入utf8mb4字符集,可用来存储emoji表情。 引入metadata locks(元数据锁)。 分区表的增强,新增两个分区类型:RANGE COLUMNS和LIST COLUMNS。 MySQL企业版引入线程池。 可配置IO读写线程的数量(innodb_read_io_threads,innodb_write_io_threads)。在此之前,其数量为1,且不可配置。 引入innodb_io_capacity选项,用于控制脏页刷新的数量。

2013年,MySQL 5.6发布,其包括如下重要特性及更新。 GTID复制。 无损复制。 延迟复制。 基于库级别的并行复制。 mysqlbinlog可远程备份binlog。 对TIME, DATETIME和TIMESTAMP进行了重构,可支持小数秒。DATETIME的空间需求也从之前的8个字节减少到5个字节。 Online DDL。ALTER操作不再阻塞DML。 可传输表空间(transportable tablespaces)。 统计信息的持久化。避免主从之间或数据库重启后,同一个SQL的执行计划有差异。 全文索引。 InnoDB Memcached plugin。 EXPLAIN可用来查看DELETE,INSERT,REPLACE,UPDATE等DML操作的执行计划,在此之前,只支持SELECT操作。 分区表的增强,包括最大可用分区数增加至8192,支持分区和非分区表之间的数据交换,操作时显式指定分区。 Redo Log总大小的限制从之前的4G扩展至512G。 Undo Log可保存在独立表空间中,因其是随机IO,更适合放到SSD中。但仍然不支持空间的自动回收。 可dump和load Buffer pool的状态,避免数据库重启后需要较长的预热时间。 InnoDB内部的性能提升,包括拆分kernel mutex,引入独立的刷新线程,可设置多个purge线程。 优化器性能提升,引入了ICP,MRR,BKA等特性,针对子查询进行了优化。 可以说,MySQL 5.6是MySQL历史上一个里程碑式的版本,这也是目前生产上应用得最广泛的版本。 2015年,MySQL 5.7发布,其包括如下重要特性及更新。 组复制 InnoDB Cluster 多源复制 增强半同步(AFTER_SYNC) 基于WRITESET的并行复制。 在线开启GTID复制。 在线设置复制过滤规则。 在线修改Buffer pool的大小。 在同一长度编码字节内,修改VARCHAR的大小只需修改表的元数据,无需创建临时表。 可设置NUMA架构的内存分配策略(innodb_numa_interleave)。 透明页压缩(Transparent Page Compression)。 UNDO表空间的自动回收。 查询优化器的重构和增强。 可查看当前正在执行的SQL的执行计

MySQL版本迭代新特性

Mysql5.5特性,相对于Mysql5.1 一是性能提升,二是稳定性提升

Mysql5.6特性,相比5.5默认参数的改变,innodb改进点,优化器改进

MySQL8.0和MySQL 5的不同性能:MySQL 8.0 的速度要比 MySQL 5.7 快 2 倍。MySQL 8.0 在以下方面带来了更好的性能:读/写工作负载、IO 密集型工作负载、以及高竞争(”hot spot”热点竞争问题)工作负载。NoSQL:MySQL 从 5.7 版本开始提供 NoSQL 存储功能,目前在 8.0 版本中这部分功能也得到了更大的改进。该项功能消除了对独立的 NoSQL 文档数据库的需求,而 MySQL 文档存储也为 schema-less 模式的 JSON 文档提供了多文档事务支持和完整的 ACID 合规性。

提交建站需求