0

0

看看MySQL 5.6, 5.7, 8.0的新特性!

藏色散人

藏色散人

发布时间:2020-04-11 11:47:56

|

2473人浏览过

|

来源于cnblogs

转载

对于mysql的历史,相信很多人早已耳熟能详,这里就不要赘述。下面仅从产品特性的角度梳理其发展过程中的里程碑事件。

推荐:《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的执行计划(EXPLAIN FOR CONNECTION)。

● 引入了查询改写插件(Query Rewrite Plugin),可在服务端对查询进行改写。

● EXPLAIN FORMAT=JSON会显示成本信息,这样可直观的比较两种执行计划的优劣。

● 引入了虚拟列,类似于Oracle中的函数索引。

● 新实例不再默认创建test数据库及匿名用户。

● 引入ALTER USER命令,可用来修改用户密码,密码的过期策略,及锁定用户等。

● mysql.user表中存储密码的字段从password修改为authentication_string。

● 表空间加密。

● 优化了Performance Schema,其内存使用减少。

● Performance Schema引入了众多instrumentation。常用的有Memory usage instrumentation,可用来查看MySQL的内存使用情况,Metadata Locking Instrumentation,可用来查看MDL的持有情况,Stage Progress instrumentation,可用来查看Online DDL的进度。

● 同一触发事件(INSERT,DELETE,UPDATE),同一触发时间(BEFORE,AFTER),允许创建多个触发器。在此之前,只允许创建一个触发器。

VIVA
VIVA

一个免费的AI创意视觉设计平台

下载

● InnoDB原生支持分区表,在此之前,是通过ha_partition接口来实现的。

● 分区表支持可传输表空间特性。

● 集成了SYS数据库,简化了MySQL的管理及异常问题的定位。

● 原生支持JSON类型,并引入了众多JSON函数。

● 引入了新的逻辑备份工具-mysqlpump,支持表级别的多线程备份。

● 引入了新的客户端工具-mysqlsh,其支持三种语言:JavaScript, Python and SQL。两种API:X DevAPI,AdminAPI,其中,前者可将MySQL作为文档型数据库进行操作,后者用于管理InnoDB Cluster。

● mysql_install_db被mysqld --initialize代替,用来进行实例的初始化。

● 原生支持systemd。

● 引入了super_read_only选项。

● 可设置SELECT操作的超时时长(max_execution_time)。

● 可通过SHUTDOWN命令关闭MySQL实例。

● 引入了innodb_deadlock_detect选项,在高并发场景下,可使用该选项来关闭死锁检测。

● 引入了Optimizer Hints,可在语句级别控制优化器的行为,如是否开启ICP,MRR等,在此之前,只有Index Hints。

● GIS的增强,包括使用Boost.Geometry替代之前的GIS算法,InnoDB开始支持空间索引。

 

2018年,MySQL 8.0发布,其包括如下重要特性及更新。

● 引入了原生的,基于InnoDB的数据字典。数据字典表位于mysql库中,对用户不可见,同mysql库的其它系统表一样,保存在数据目录下的mysql.ibd文件中。不再置于mysql目录下。

● Atomic DDL。

● 重构了INFORMATION_SCHEMA,其中,部分表已重构为基于数据字典的视图,在此之前,其为临时表。

● PERFORMANCE_SCHEMA查询性能提升,其已内置多个索引。

● 不可见索引(Invisible index)。

● 降序索引。

● 直方图。

● 公用表表达式(Common table expressions)。

● 窗口函数(Window functions)。

● 角色(Role)。

● 资源组(Resource Groups),可用来控制线程的优先级及其能使用的资源,目前,能被管理的资源只有CPU。

● 引入了innodb_dedicated_server选项,可基于服务器的内存来动态设置innodb_buffer_pool_size,innodb_log_file_size和innodb_flush_method。

● 快速加列(ALGORITHM=INSTANT)。

● JSON字段的部分更新(JSON Partial Updates)。

● 自增主键的持久化。

● 可持久化全局变量(SET PERSIST)。

● 默认字符集由latin1修改为utf8mb4。

● 默认开启UNDO表空间,且支持在线调整数量(innodb_undo_tablespaces)。在MySQL 5.7中,默认不开启,若要开启,只能初始化时设置。

● 备份锁。

● Redo Log的优化,包括允许多个用户线程并发写入log buffer,可动态修改innodb_log_buffer_size的大小。

● 默认的认证插件由mysql_native_password更改为caching_sha2_password。

● 默认的内存临时表由MEMORY引擎更改为TempTable引擎,相比于前者,后者支持以变长方式存储VARCHAR,VARBINARY等变长字段。从MySQL 8.0.13开始,TempTable引擎支持BLOB字段。

● Grant不再隐式创建用户。

● SELECT ... FOR SHARE和SELECT ... FOR UPDATE语句中引入NOWAIT和SKIP LOCKED选项,解决电商场景热点行问题。

● 正则表达式的增强,新增了4个相关函数,REGEXP_INSTR(),REGEXP_LIKE(),REGEXP_REPLACE(),REGEXP_SUBSTR()。

● 查询优化器在制定执行计划时,会考虑数据是否在Buffer Pool中。而在此之前,是假设数据都在磁盘中。

● ha_partition接口从代码层移除,如果要使用分区表,只能使用InnoDB存储引擎。

● 引入了更多细粒度的权限来替代SUPER权限,现在授予SUPER权限会提示warning。

● GROUP BY语句不再隐式排序。

● MySQL 5.7引入的表空间加密特性可对Redo Log和Undo Log进行加密。

● information_schema中的innodb_locks和innodb_lock_waits表被移除,取而代之的是performance_schema中的data_locks和data_lock_waits表。

● 引入performance_schema.variables_info表,记录了参数的来源及修改情况。

● 增加了对于客户端报错信息的统计(performance_schema.events_errors_summary_xxx)。

● 可统计查询的响应时间分布(call sys.ps_statement_avg_latency_histogram())。

● 支持直接修改列名(ALTER TABLE ... RENAME COLUMN old_name TO new_name)。

● 用户密码可设置重试策略(Reuse Policy)。

● 移除PASSWORD()函数。这就意味着无法通过“SET PASSWORD ... = PASSWORD('auth_string') ”命令修改用户密码。

● 代码层移除Query Cache模块,故Query Cache相关的变量和操作均不再支持。

● BLOB, TEXT, GEOMETRY和JSON字段允许设置默认值。

● 可通过RESTART命令重启MySQL实例。

 

需要注意的是,上面提到的发布,一般指的是GA版本。

 

最后,看看下面这个表格,表中给出了最近几个大版本的发布时间,及截止到本书出版,其最新的小版本及其发布时间。

c9ff0619b99c706b4637ef232640b15.png

https://en.wikipedia.org/wiki/MySQL#Release_history

从表中的数据来看,

1. 大概每3年会发布一个大的版本。

2. 产品的支持周期一般是8年。

3. 以为MySQL 5.5是老古董了,但官方仍然在不断更新。

原文地址:https://www.cnblogs.com/ivictor/p/9807284.html

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

16

2026.03.11

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

23

2026.03.10

Kotlin Android模块化架构与组件化开发实践
Kotlin Android模块化架构与组件化开发实践

本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。

75

2026.03.09

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

95

2026.03.06

Rust内存安全机制与所有权模型深度实践
Rust内存安全机制与所有权模型深度实践

本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。

218

2026.03.05

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

420

2026.03.04

AI安装教程大全
AI安装教程大全

2026最全AI工具安装教程专题:包含各版本AI绘图、AI视频、智能办公软件的本地化部署手册。全篇零基础友好,附带最新模型下载地址、一键安装脚本及常见报错修复方案。每日更新,收藏这一篇就够了,让AI安装不再报错!

168

2026.03.04

Swift iOS架构设计与MVVM模式实战
Swift iOS架构设计与MVVM模式实战

本专题聚焦 Swift 在 iOS 应用架构设计中的实践,系统讲解 MVVM 模式的核心思想、数据绑定机制、模块拆分策略以及组件化开发方法。内容涵盖网络层封装、状态管理、依赖注入与性能优化技巧。通过完整项目案例,帮助开发者构建结构清晰、可维护性强的 iOS 应用架构体系。

222

2026.03.03

C++高性能网络编程与Reactor模型实践
C++高性能网络编程与Reactor模型实践

本专题围绕 C++ 在高性能网络服务开发中的应用展开,深入讲解 Socket 编程、多路复用机制、Reactor 模型设计原理以及线程池协作策略。内容涵盖 epoll 实现机制、内存管理优化、连接管理策略与高并发场景下的性能调优方法。通过构建高并发网络服务器实战案例,帮助开发者掌握 C++ 在底层系统与网络通信领域的核心技术。

33

2026.03.03

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
MySQL 教程
MySQL 教程

共48课时 | 2.5万人学习

MySQL 初学入门(mosh老师)
MySQL 初学入门(mosh老师)

共3课时 | 0.3万人学习

简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 846人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号