【MySQL】MySQL里程碑

在这里插入图片描述


个人主页:【😊个人主页】
系列专栏:【❤️MySQL】


文章目录

  • 时间表
  • 从产品特性的角度梳理其发展过程中了解MySQL里程碑事件


时间表

在这里插入图片描述

从产品特性的角度梳理其发展过程中了解MySQL里程碑事件

  1. 1995年,MySQL 1.0发布,仅供内部使用。
  2. 1996年,MySQL 3.11.1发布,直接跳过了MySQL 2.x版本。
  3. 1999年,MySQL AB公司成立。同年,发布MySQL 3.23,该版本集成了Berkeley DB存储引擎。该引擎由Sleepycat公司开发,支持事务。在集成该引擎的过程中,对源码进行了改造,为后续可插拔式存储引擎架构奠定了基础。
  4. 2000年,ISAM升级为MyISAM存储引擎。同年,MySQL基于GPL协议开放源码。
  5. 2002年,MySQL 4.0发布,集成了后来大名鼎鼎的InnoDB存储引擎。该引擎由Innobase公司开发,支持事务,支持行级锁,适用于OLTP等高并发场景。
  6. 2005年,MySQL 5.0发布,开始支持游标,存储过程,触发器,视图,XA事务等特性。同年,Oracle收购Innobase公司。
  7. 2008年,Sun以10亿美金收购MySQL AB。同年,发布MySQL 5.1,其开始支持定时器(Event scheduler),分区,基于行的复制等特性。
  8. 2009年,Oracle以74亿美金收购Sun公司。
  9. 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选项,用于控制脏页刷新的数量。
  1. 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历史上一个里程碑式的版本,这也是目前生产上应用得最广泛的版本。
  1. 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),允许创建多个触发器。在此之前,只允许创建一个触发器。
  • 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开始支持空间索引。
  1. 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版本。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/930.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MongoDB负载均衡集群监控

对负载均衡的集群监控,不仅仅集中在对集群所有的资源、服务等进行监控,还要兼顾整体逻辑。以MongoDB高可用负载均衡集群为例,对逻辑层面的监控,就是模拟用户行为,访问集群数据,判断运行状态是否正常。 Mong…

opencv 图像基础处理_灰度图像

opencv 学习2_灰度图像 二值图像表示起来简单方便,但是因为其仅有黑白两种颜色,所表示的图像不够细腻。如果想要表现更多的细节,就需要使用更多的颜色。例如,图 2-3 中的 lena 图像是一幅灰度图像, 它采用了更多的数值…

简单线性回归评估指标+R Squared

使得每一个数据集尽可能的小 均方误差MSE:(平方和取平均值) 均方根误差RMSE:(平方和取平均值开根号):平均误差值 平均绝对误差MAE:(绝对值取平均)&#xff1a…

Vue3通透教程【十八】TS为组件的props标注类型

文章目录 🌟 写在前面🌟 回顾defineProps的基础写法🌟 defineProps的TS写法🌟 withDefaults方法🌟 拓展🌟 写在最后 🌟 写在前面 专栏介绍: 凉哥作为 Vue 的忠实 粉丝输出过大量的 …

内网安全:内网穿透详解

目录 内网穿透技术 内网穿透原理 实验环境 内网穿透项目 内网穿透:Ngrok 配置服务端 客户端配置 客户端生成后门,等待目标上线 内网穿透:Frp 客户端服务端建立连接 MSF生成后门,等待上线 内网穿透:Nps 服…

【Linux】- Linux 磁盘分区、挂载

Linux 磁盘分区、挂载 1.1 Linux 分区1.2 硬盘说明1.3 磁盘情况查询 1.1 Linux 分区 原理介绍 Linux 来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构 , Linux 中每个分区都是用来组成整个文件系…

Mac搭建安卓模拟器(支持M1/M2)

引言 最近在研究Vue打包成app,给我的报价器搞一个移动端,奈何没有安卓手机用于测试。所以想到安装一个安卓模拟器。 看了下目前主流的安卓模拟器基本都不支持Mac版本。网易的mumu目前来看还是只支持Intel芯。 1. 简单版(仅M系)…

BigTable:一个针对结构化数据的分布式存储系统----论文摘要

目录 摘要 1. 介绍 2. 数据模型 行 列族 时间戳 3. API 4. 所需构件 5. 实现 5.1 Tablet的位置 5.2 Tablet分配 5.3 Tablet服务 5.4 压实(Compactions) 6. 优化 本地化分组 压缩(compression) 通过缓存提高读操作的性能 Bloom过滤器 C…

数据库查询速度上不去的查询和分析

主要原因 数据库查询速度上不去、阻塞是指在并发访问 MySQL 数据库时,某个事务占用了资源并且长时间不释放,导致其他事务无法执行或执行缓慢的情况。MySQL 阻塞可能会导致数据库性能下降,甚至出现死锁等问题,需要马上进行处理。在 MySQL中,线程阻塞可能是由于以下原因导致…

基于人工智能与边缘计算Aidlux的鸟类检测驱赶系统(可修改为coco 80类目标检测)

●项目名称 基于人工智能与边缘计算Aidlux的鸟类检测驱赶系统(可修改为coco 80类目标检测) ●项目简介 本项目在Aidlux上部署鸟类检测驱赶系统,通过视觉技术检测到有鸟类时,会进行提示。并可在源码上修改coco 80类目标检测索引直…

ELK-日志服务【logstash-安装与使用】

目录 【1】安装logstash logstash input 插件的作用与使用方式 【2】input --> stdin插件:从标准输入读取数据,从标准输出中输出内容 【3】input -- > file插件:从文件中读取数据 【4】input -- > beat插件:从filebe…

开发跨平台APP,是用Flutter还是React Native开发框架?

随着移动互联网的飞速发展,对于开发人员而言,如何快速地开发出兼容不同平台(iOS、Android)的应用,成为了一个重要的问题。 跨平台应用程序开发框架的好处: 1. 一个App适用于多个设备; 2. 一个…

【CSDN新星计划】初阶牛C/C++赛道——顺序程序设计(C语句②)

目录 3.2 最基本的语句——赋值语句 3.2 最基本的语句——赋值语句 在C程序中最常用的语句是:赋值语句和输入输出语句。其中最基本的是赋值语句程序中的计算功能大部分是由赋值语句实现的,几乎每一个有实用价值的程序都包括赋值语句。有的程序中的大部分语句都是赋值语句。先介…

arcgis实现影像监督分类

1、打开ArcMap,右击空白处打开影像分类工具栏,如下: 2、打开影像,如下: 打开的影像由于未经处理,颜色看起来很昏暗,这时候可以拉伸一下。具体操作,右击图层选择属性,如下&#xff1a…

基于springboot,vue网上订餐系统

开发工具:IDEA 服务器:Tomcat9.0, jdk1.8 项目构建:maven 数据库:mysql5.7 前端技术 :VueElementUI 服务端技术:springbootmybatisredis 本系统分用户前台和管理后台两部分,项…

亚马逊评论点赞的作用

在亚马逊上,评论点赞可以起到几个重要的作用: 1、增加可信度:当一个产品或服务有很多积极的评论点赞时,其他用户会更容易相信这些评论的可靠性。点赞数量多的评论通常被认为是由多个用户验证的,并且对于潜在买家来说&…

SpringBoot中注入ServletFilterListener

1.基本介绍 文档:SpringBoot中注入Servlet&Filter&Listener 考虑到实际开发业务非常复杂和兼容问题,SpringBoot支持将Servlet、Filter、Listener注入spring容器中,成为Spring Bean也就是说,SpringBoot开放了和原生WEB组件…

基于单片机智能洗衣机设计与实现

功能介绍 以51单片机作为主控系统;利用STC89C52单片机进行数据处理; 通过2路继电器分别控制洗衣机进水、出水相关逻辑运算;采用L298去掉直流电机实现滚筒正反转;通过单片机进行处理数据,把采集到的数据通过LCD液晶显示…

基于Nonconvex规划的配电网重构研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

网络安全与密码学

1、网络安全威胁 破坏网络安全的一些理论方式: 窃听:窃听信息,在网路通信双方直接进行窃听。 插入:主动在网络连接中插入信息(可以在message中插入恶意信息) 假冒:伪造(spoof&#x…