版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。

欢迎添加华为云小助手微信(微信号:HWCloud002HWCloud003),输入关键字“加群”,加入华为云线上技术讨论群;输入关键字“最新活动”,获取华为云最新特惠促销。华为云诸多技术大咖、特惠活动等你来撩!

1. MySQL8.0的版本历史

  • 2016-09-12第一个DM(development milestone)版本8.0.0发布
  • 2018-04-19第一个GA(General Availability)版本开始,8.0.11发布
  • 2018-07-27 下一个GA版本,8.0.12发布
  • 2018-10-22 下一个GA版本,8.0.13发布
  • 2019-01-21 下一个GA版本,8.0.14发布
  • 最新的GA版本为8.0.15,于2019-02-01发布
  • 最近待GA的版本为8.0.16, 8.0.17,

从中可以看出,大概每1~3个月一个版本。

2. MySQL8.0中新增的特性

  • 事务性数据字典 数据字典表以InnoDB表存储字典数据,位于mysql数据库下,对外不可见。有专门的表空间mysql.idb,位于数据目录下。但是可以通过informaction_schema下面的一些表来查询字典数据。 在以前的版本中,字典数据以元数据文件、非事务表等来存储。现在这些元数据文件被删除了。比如: .frm, .par, .trn, .isl, .db.opt等都在MySQL8.0中不存在了。
  • 原子DDL 事务性数据字典的引入,使得原子DDL成为可能。作为事务要不提交,要不回滚。分为表级和非表级语句,表级支持InnoDB。非表级包括:create, drop等语句。
  • 安全和账号管理
  • Mysql系统数据库下的权限表现在都是InnoDB的,以前是MyISAM的,对于多个用户进行操作时会出现部分成功,部分失败的情况。现在要不成功,要不rollback。
  • 新的caching_sha2_password认证插件作为默认的认证插件,比mysql_native_password更安全,性能更好。但可能在现网会出现一个连接相关的问题。
  • 支持角色(role)
  • 对于密码管理更加严格控制,可以维护密码历史信息。启用密码重用策略。
  • 资源管理 支持资源组的创建和管理,能将运行的线程分配给特定的资源组。
  • InnoDB增强
  • 自增列方面。现在自增列计数器会在每次值修改时,将值写到REDO LOG中,并且在CHECKPOINT时写到存储引擎私有的系统表中。这就消除了以往重启实例自增列不连续的问题。
  • 当索引损坏时,会把损坏标识写到redo log。在checkpoint时会将内存的损坏标识数据写到存储引擎私有的系统表中。
  • InnoDB memcached插件支持多个get操作(在单个memcached查询中获取多个键值对)和范围查询。
  • 新的动态变量innodb_deadlock_detect,可以禁用死锁检查。在高并发的系统中,无数个线程等待同一个锁,死锁检查可能会引起系统宕机。有时,禁用死锁检查更有效。当死锁发生时,可以依赖innodb_lock_wait_timeout设置让事务回滚。
  • 新的information_schema.innodb_cached_indexes表可以报告每个索引在bufferpool中的索引页的数量。
  • InnoDB临时表现在创建在共享的临时表空间中。
  • 支持redo log和undo log的加密
  • 对于select…for share和select…for update 锁读语句,支持nowait和skip locked选项。Nowait表示如果请求的行被去其他事务锁住了立即返回。SKIP LOCKED则会从结果集中移除上锁的行。
  • InnoDB存储引擎使用MySQL的数据字典,而不是用自己的和引擎相关的数据字典。
  • mysql库的系统表和数据字典表创建在单独的InnoDB表空间中,文件名为mysql.ibd. 以前这些表都是创建在各自的InnoDB表空间中。
  • 字符集支持
    默认字符集从latin1变成了utf8mb4. 对于utf8mb4字符集增加了新的比较规则,比如utf8mb4_ja_0900_as_cs。
  • JSON增强
  • 数据类型支持 MySQL支持将字符常量或者表达式作为数据类型的默认值。包括能将表达式作为BLOB, TEXT, GEOMETRY, JSON等数据类型的默认值,这在以前是不可以的。
  • 优化器
  • 通用表表达式 在SELECT等语句前,使用WITH字句来对临时结果集进行命名。
  • 窗口函数 MySQL现在支持窗口函数,在一个查询中对每行进行计算。这些函数包括RANK(), LAG(), NTILE()。另外,有几个聚合函数也能用作窗口函数。比如SUM(),AVG()。
  • 横向派生表(Lateral derived tables)
  • 支持正则表达式
  • 内部临时表 内存内部临时表,默认的存储引擎从MEMORY变成了TempTable。TempTable对于VARCHAR和VARBINARY字段存储更高效。 Internal_tmp_mem_storage_engine:该变量用来定义内存内部临时表使用哪个引擎。允许取值有TempTable(默认)和MEMORY。 Temtable_max_ram: 内存内部临时表超过这个值就会将数据存储到磁盘上。
  • 日志记录 错误日志模块使用MySQL组件架构重写了,使用内置的组件来实现错误日志。 另外,还有一个可加载的JSON日志记录器。 要控制启用哪些日志组件,使用 log_error_services 系统变量。
  • 备份锁 引入了一种新的备份锁(backup lock),它允许在online备份的时候进行DML操作,同时可防止快照不一致。备份锁由lock instance for backup和unlock instance语法支持。使用这些语句需要BACKUP_ADMIN权限。 原来的extrabackup等备份软件是不是应该改写,不要使用flush table with read lock这样的语句来上锁。 当有大事务时,会hung住,无法备份。
    如果采用lock instance for backup则没有问题。
  • 复制增强 支持使用压缩格式,对JSON文档的部分更新记录binlog,能节省空间。如果使用的STATEMENT格式的binlog,该功能自动开启,或者通过binlog_row_value_options系统变量设为PARTIAL_JASON来开启。
  • 连接管理 允许配置一个专门端口用于管理连接,当连接数打满时可以用于连接数据库进行管理。
  • 需要设置admin_address,默认该值为空。
  • 使用的端口默认为33062, 由admin_port来设置。
  • 该端口的没有连接数的限制。
  • 需要有SERVICE_CONNECTION_ADMIN的权限
  • Create_admin_listener_thread系统变量用来决定是用普通连接的监听线程还是采用自己专用的线程。默认值为普通监听线程。

操作如下:

 mysql> show variables like 'admin_%';

 +---------------+---------------+

 | Variable_name | Value         |

 +---------------+---------------+

 | admin_address | 192.168.1.187 |         //这个IP地址是服务器的地址,不是客户端的。一定要设置这个变量

 | admin_port    |          |

 +---------------+---------------+

  rows in set (0.00 sec)

然后将max_connections调小,制造连接数打满的场景。

 mysql> set global max_connections=;

 Query OK,  rows affected (0.00 sec)

 mysql> show variables like 'max_connections';

 +-----------------+-------+

 | Variable_name   | Value |

 +-----------------+-------+

 | max_connections |     |

 +-----------------+-------+

  row in set (0.00 sec)

 nohup mysql -h192.168.1.  -P3306 -uroot -p****** -NBe 'select sleep(2000)' &

 mysql: [Warning] Using a password on the command line interface can be insecure.

 ERROR  (HY000): Too many connections

此时,发现还可以用管理端口进行连接,并且没有数量限制。

mysql -h192.168.1.  -P33062 -uroot -p******

插件

以前MySQL的插件可以用C和C++编写。现在插件使用的MySQL头文件是c++代码,意味着现在的插件必须用C++,不能用C编写。

私货时间:华为云618大促火热进行中,全场1折起,免费抽主机,消费满额送P30 Pro,点此抢购

来源:华为云社区 作者:HW云数据库

HDC.Cloud 华为开发者大会2020 即将于2020年2月11日-12日在深圳举办,是一线开发者学习实践鲲鹏通用计算、昇腾AI计算、数据库、区块链、云原生、5G等ICT开放能力的最佳舞台。

欢迎报名参会

MySQL 8.0新增特性详解【华为云技术分享】的更多相关文章

  1. 【PHP系列】PHP 7.0新增特性详解

    开始介绍PHP7.0新特性,具体的可以参照官网的介绍,我来挑一些给大家详细讲解下 http://php.net/manual/en/migration70.new-features.php 1. ?? ...

  2. PHP 7.0新增特性详解

    https://www.cnblogs.com/riverdubu/archive/2017/03/22/6434705.html 开始介绍PHP7.0新特性,具体的可以参照官网的介绍,我来挑一些给大 ...

  3. C#各个版本中的新增特性详解

    序言 自从2000年初期发布以来,c#编程语言不断的得到改进,使我们能够更加清晰的编写代码,也更加容易维护我们的代码,增强的功能已经从1.0搞到啦7.0甚至7.1,每一次改过都伴随着.NET Fram ...

  4. C#各个版本中的新增特性详解【转】

    序言 自从2000年初期发布以来,c#编程语言不断的得到改进,使我们能够更加清晰的编写代码,也更加容易维护我们的代码,增强的功能已经从1.0搞到啦7.0甚至7.1,每一次改过都伴随着.NET Fram ...

  5. Servlet 3.0 新特性详解

    转自:http://www.ibm.com/developerworks/cn/java/j-lo-servlet30/#major3 Servlet 是 Java EE 规范体系的重要组成部分,也是 ...

  6. CSS3新增特性详解(二)

    上篇博文主要介绍了CSS3新增特性中的静态特性,比如新的选择器.多背景图.阴影.渐变等.本文主要介绍CSS3中新增的动态特性,如过度.动画.变形等. transitian:  -webkit-tran ...

  7. 【转帖】Servlet 3.0 新特性详解

    http://www.ibm.com/developerworks/cn/java/j-lo-servlet30/ Servlet 3.0 新特性概述 Servlet 3.0 作为 Java EE 6 ...

  8. Servlet 3.0 新特性详解 (转载)

    原文地址:https://www.ibm.com/developerworks/cn/java/j-lo-servlet30/ Servlet 3.0 新特性概述 Servlet 3.0 作为 Jav ...

  9. 海量数据分析更快、更稳、更准。GaussDB(for MySQL) HTAP只读分析特性详解

    本文作者康祥,华为云数据库内核开发工程师,研究生阶段主要从事SPARQL查询优化相关工作.目前在华为公司参与华为云GaussDB(for MySQL) HTAP只读内核功能设计和研发. 1. 引言 H ...

随机推荐

  1. Pandas 计算工具介绍

    # 导入相关库 import numpy as np import pandas as pd 统计函数 最常见的计算工具莫过于一些统计函数了.首先构建一个包含了用户年龄与收入的 DataFrame i ...

  2. CSPS模拟 97

    越来越弱了, 而且不如之前积极了,非常的颓废. 联赛前出现这种问题也是够我受的. T1 打表找规律失败.jpg 一直在找多项式规律,没找指数规律. T2 唉. T3 考虑到最多有n种颜色,考虑在线段树 ...

  3. csp-s 66

    我向来只在考砸的时候写博客.这次题很水,但是我极没有状态,我T1没看题目前面的话: 不知道这个条件的我蒙蔽的答题.推各种柿子,想这个矩阵的特殊构造,就是同行的构造,然后我T1想了1个多小时,然后死了! ...

  4. markdown 编辑器概述

    markdown 编辑器概述     编辑器其实很多很多,主要分为    网页编辑和软件编辑 (效果其实感觉效果差不多,看个人喜好,笔者个人还是喜欢本地,感觉方便挺多的) ## 网页编辑器 主要有 C ...

  5. Scrapy进阶知识点总结(四)——Item Pipeline

    Item Pipeline Item Pipeline调用发生在Spider产生Item之后.当Spider解析完Response之后,Item就会传递到Item Pipeline,被定义的Item ...

  6. javascript 解决默认取整的坑(目前已知的最佳解决方案)

    javascript 解决默认取整的坑(目前已知的最佳解决方案) 复现该问题 js在数字操作时总会取更高精度的结果,例如1234/10结果就是123.4,但是在c或者java中整数除以10的结果还是整 ...

  7. thinkphp volist标签中加if判断的写法

    <if condition="$vo['devstatus'] eq 1">在线<else /> 离线</if> IF标签用法 <if c ...

  8. SpringBoot基本配置详解

    SpringBoot项目有一些基本的配置,比如启动图案(banner),比如默认配置文件application.properties,以及相关的默认配置项. 示例项目代码在:https://githu ...

  9. python3.7.1安装Scrapy爬虫框架

    python3.7.1安装Scrapy爬虫框架 环境:win7(64位), Python3.7.1(64位) 一.安装pyhthon 详见Python环境搭建:http://www.runoob.co ...

  10. Centos7下oracle12c的安装与配置(详细)

    一.硬件配置 CentOS7@VMware® Workstation 15 Pro,分配资源:CPU:2颗,内存:4GB,硬盘空间:30GB 二.软件准备  linux.x64_11gR2_datab ...