# MySQL 数据库的版本
mysql-5.0 : mysql-5.0 版本之前, myisam 默认支持的表大小为 4G 。从 mysql-5.0 以后, MyISAM 默认支持 256T 的表单数据。 myisam 只缓存索引数据。 2005 年的 5.0 版本又添加了存储过程、服务端游标、触发器、查询优化以及分布式事务功能。
MySQL5.1 : 2008 年发布的 MySQL 5.1 的版本,基本上就是一个增加了崩溃恢复功能的 MyISAM ,使用表级锁,但可以做到读写不冲突,即在进行任何类型的更新操作的同时都可以进行读操作,但多个写操作不能并发。
mysql5.5 : 2010 年 12 月发布 mysql5.5 版本默认存储引擎更改为 InnoDB 多个回滚段( Multiple Rollback Segments ), 之前的 innodb 版本最大能处理 1023 个并发处理操作,现在 mysql5.5 可以处理高达 128K 的并发事务,改善事务处理中的元数据锁定。例如,事物中一个语句需要锁一个表,会在事物结束时释放这个表,而不是像以前在语句结束时释放表。 增加了 INFORMATION_SCHEMA 表,新的表提供了与 InnoDB 压缩和事务处理锁定有关的具体信息。
# mysql5.6
2013 年 2 月发布。
-
安全性进行了加强。用户的账号和密码进行了更强的加密算法,使用
sha256_passwordSHA-256密码哈希的身份验证插件来进行加密。mysql.user表中新增了password_expired字段,过期后,所有连接的执行都会报出异常。 -
MySQL Server的参数默认值进行了更改。如下图所示:

-
mysql5.6版本中InnoDB可以限制大量表打开的时候内存占用过多的问题InnoDB性能加强。如大内存优化等InnoDB死锁信息可以记录到error日志,
InnoDB引擎也支持了FULLTEXT索引。并使用MATCH() ... AGAINST语法查询它们。ALTER TABLE在不复制表,不阻止对表的插入,更新和删除或两者都不进行的情况下,可以执行多种操作。InnoDB使用更快的新算法来检测 死锁 -
分区功能
- 分区的最大数量增加到
8192。此数量包括表的所有分区和所有子分区。
- 分区的最大数量增加到
-
复制和日志记录
MySQL现在支持使用全局事务标识符(也称为GTID)进行基于事务的复制 。这样,当每个事务在原始服务器上提交并被任何从属服务器应用时,就可以识别和跟踪每个事务。MySQL基于行的复制从该版本开始支持行图像控制
-
优化器增强功能
limit查询进行了优化,如果N行元素小于排序缓冲区,那么就使用内存排序而不是合并文件。- 优化器可以更有效地处理
FROM子句中的子查询 (即派生表)。FROM 子句中子查询的实现 被推迟到查询执行期间需要其内容时为止,从而提高了性能。在查询执行期间,优化器可以将索引添加到派生表中,以加快从中获取行的速度。
-
数据类型
MySQL从5.6开始允许TIME,DATETIME和TIMESTAMP值的小数秒,精度高达微秒(6位)。- 取消了每个表最多可以自动将
TIMESTAMP列初始化或更新为当前日期和时间的限制。任何TIMESTAMP列定义都可以具有DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP子句的任意组合。此外,这些子句现在可以与 DATETIME 列定义一起使用。
- 取消了每个表最多可以自动将
-
主机缓存。
MySQL现在提供有关客户端连接到服务器时发生错误的原因的更多信息,以及对主机缓存的改进访问,该缓存包含客户端IP地址和主机名信息,用于避免DNS查找。
# mysql5.7
-
将
Undo从共享表空间ibdata文件中分离出来,可以在安装MySQL时由用户自行指定文件大小和数量。 -
增加了
temporary临时表空间,里面存储着临时表或临时查询结果集的数据。 -
Buffer Pool大小可以动态修改,无需重启数据库实例,这是DBA的福音。
# MySQL 8.0 版本新特性如下:
-
将
InnoDB表的数据字典和Undo都从共享表空间ibdata中彻底分离出来了,以前需要ibdata文件中数据字典与独立表空间ibd文件中数据字典一致才行,8.0版本就不需要了。 -
temporary临时表空间也可以配置多个物理文件,而且均为InnoDB存储引擎并能创建索引,这样加快了处理的速度。 -
用户可以像
Oracle数据库那样设置一些表空间,每个表空间对应多个物理文件,每个表空间可以给多个表使用,但一个表只能存储在一个表空间中。
# 最后
期望与你一起遇见更好的自己
