看看MySQL5.6,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的施行规划(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开端支撑空间索引。
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版本。
最后,看看下面这个表格,表中给出了比来几个大版本的发表工夫,及截止到本书出版,其最新的小版本及其发表工夫。
https://en.wikipedia.org/wiki/MySQL#Release_history
从表中的数据来看,
1. 大约每3年会发表一个大的版本。
2. 产品的支撑周期个别是8年。
3. 认为MySQL 5.5是老古董了,但官方依然在一直更新。
原文地址:https://www.cnblogs.com/ivictor/p/9807284.html
以上就是看看MySQL 5.6, 5.7, 8.0的新特性!的细致内容,更多请关注 百分百源码网 其它相干文章!