🐬【MySQL 技术专题】该换换你的数据库版本了,让我们一同迎接 8.0 的到来哦!(初探篇)
前提背景
MySQL 关是一种关系数据库管理系统,所使用的 SQL 语言是用于访问数据库的最常用的标准化语言,其特点为体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,在 Web 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。本文主要讲述压缩版,因为安装不太方便,但是功能效果都是一样的!
MySQL8 的介绍说明
MySQL 8.0 是全球最受欢迎的开源数据库的一个非常令人兴奋的新版本,全面改进。一些关键的增强包括:
MySQL8 的特性介绍
SQL 窗口函数,公用表表达式,NOWAIT 和 SKIP LOCKED,降序索引,分组,正则表达式,字符集,成本模型和直方图。
JSON 扩展语法,新功能,改进排序和部分更新。使用 JSON 表函数,您可以使用 JSON 数据的 SQL 机制。
GIS 地理支持。空间参考系统(SRS),以及 SRS 感知空间数据类型,空间索引和空间功能。
可靠性 DDL 语句已变得原子性和崩溃安全,元数据存储在单个事务数据字典中。由 InnoDB 提供支持!
可观察性性能架构,信息架构,配置变量和错误记录的显着增强。
可管理性远程管理,撤消表空间管理和新的即时 DDL。
安全 OpenSSL 改进,新的默认身份验证,SQL 角色,分解超级特权,密码强度等等。
性能 InnoDB 在读/写工作负载,IO 绑定工作负载和高争用“热点”工作负载方面明显更好。
增加了资源组功能,通过将用户线程映射到 CPU,为用户提供一个选项,以针对特定硬件上的特定工作负载进行优化
开发者需要了解的特性!
MySQL 开发人员需要新功能,而 MySQL 8.0 在诸如 SQL,JSON,正则表达式和 GIS 等领域提供了许多新的和更多需求的功能。开发人员也希望能够存储 Emojis,因此 UTF8MB4 现在是 8.0 中的默认字符集。最后,数据类型得到了改进,在 BINARY 数据类型上进行了按位操作,并且改进了 IPv6 和 UUID 功能。
下面简要介绍 MySQL 8 中值得关注的新特性和改进。
性能:MySQL8.0 的速度要比 MySQL5.7 快 2 倍。MySQL 8.0 在以下方面带来了更好的性能:读/写工作负载、IO 密集型工作负载、以及高竞争("hot spot"热点竞争问题)工作负载。
NoSQL:MySQL 从 5.7 版本开始提供 NoSQL 存储功能,目前在 8.0 版本中这部分功能也得到了更大的改进。该项功能消除了对独立的 NoSQL 文档数据库的需求,而 MySQL 文档存储也为 schema-less 模式的 JSON 文档提供了多文档事务支持和完整的 ACID 合规性。
窗口函数(Window Functions):从 MySQL 8.0 开始,新增了一个叫窗口函数的概念,它可以用来实现若干新的查询方式。窗口函数与 SUM()、COUNT() 这种集合函数类似,但它不会将多行查询结果合并为一行,而是将结果放回多行当中。即窗口函数不需要 GROUP BY。
窗口函数
MySQL 8.0 提供了 SQL 窗口功能。与分组集合函数类似,窗口函数对一组行进行一些计算,例如 COUNT 或 SUM。但是,如果分组聚合将这组行集合到一行中,则窗口函数将为结果集中的每一行执行聚合。
窗口化的聚合函数:COUNT,SUM,AVG,MIN,MAX,BIT_OR,BIT_AND,BIT_XOR,STDDEV_POP(及其同义词 STD,STDDEV),STDDEV_SAMP,VAR_POP(及其同义词 VARIANCE)和 VAR_SAMP。
专门的窗口函数是:RANK,DENSE_RANK,PERCENT_RANK,CUME_DIST,NTILE,ROW_NUMBER,FIRST_VALUE,LAST_VALUE,NTH_VALUE,LEAD 和 LAG
对窗口函数(又名分析函数)的支持是一种频繁的用户请求
隐藏索引:在 MySQL 8.0 中,索引可以被“隐藏”和“显示”。当对索引进行隐藏时,它不会被查询优化器所使用。我们可以使用这个特性用于性能调试,例如我们先隐藏一个索引,然后观察其对数据库的影响。如果数据库性能有所下降,说明这个索引是有用的,然后将其“恢复显示”即可;如果数据库性能看不出变化,说明这个索引是多余的,可以考虑删掉。
降序索引:MySQL 8.0 为索引提供按降序方式进行排序的支持,在这种索引中的值也会按降序的方式进行排序。
公用表表达式(Common Table Expressions CTE):在复杂的查询中使用嵌入式表时,使用 CTE 使得查询语句更清晰。
MySQL 8.0 提供[递归]公用表表达式(CTE)。非递归 CTE 可以解释为“改进的派生表”,因为它允许派生表被多次引用。递归 CTE 是一组迭代构建的行:从最初的一组行开始,一个进程派生新的行,然后将这些新的行重新输入到进程中,产生更多的行,等等,直到该过程不再生成行。
UTF-8 编码:从 MySQL 8 开始,使用 utf8mb4 作为 MySQL 的默认字符集。
JSON:MySQL 8 大幅改进了对 JSON 的支持,添加了基于路径查询参数从 JSON 字段中抽取数据的 JSON_EXTRACT() 函数,以及用于将数据分别组合到 JSON 数组和对象中的 JSON_ARRAYAGG() 和 JSON_OBJECTAGG() 聚合函数。
可靠性:InnoDB 现在支持表 DDL 的原子性,也就是 InnoDB 表上的 DDL 也可以实现事务完整性,要么失败回滚,要么成功提交,不至于出现 DDL 时部分成功的问题,此外还支持 crash-safe 特性,元数据存储在单个事务数据字典中。
高可用性(High Availability):InnoDB 集群为您的数据库提供集成的原生 HA 解决方案。
安全性:对 OpenSSL 的改进、新的默认身份验证、SQL 角色、密码强度、授权。
MySQL8 的安装介绍
进入官网后,点击"Dowload",然后页面往下拉
接下来看到的页面是这样的,红色框框的链接就是 mysql 社区版,是免费的 mysql 版本,然后我们点击这个框框的链接:
接下来跳转到这个页面,在这里,我们只要下载社区版的 Server 就可以了:
下载免安装版(windows 以外的其他系统除外)
至此,安装包就下载好了!
注意,安装的目录应当放在指定位置,其次,绝对路径中避免出现中文,推荐首选英文为命名条件!
MySQL 解压和配置环境变量
找一个文件夹放入解压后的 mysql,不建议放 c 盘,200M 左右的 sql 解压后大约接近 1G
把 MySQL 解压后的 bin 文件地址加入环境变量的 path,方便终端寻找 MySQL 命令行。
MySQL 创建配置
下载完后,建议解压到一个没有中文的路径,在解压目录创建 my.ini 配置文件(如果没有就自己手动建立一个即可)
添加相关基本配置
mysql 给出的初始密码太复杂了,一般我们需要改为一个简单的密码方便之后登陆,在 MySQL8.0.4 以前,执行:SET PASSWORD=PASSWORD(’[修改的密码]’),即可更改密码,但 MySQL8.0.4 开始,这样默认是不行的。因为之前,MySQL 的密码认证插件是“mysql_native_password”,而现在使用的是“caching_sha2_password”。
因为当前有很多数据库工具和链接包都不支持“caching_sha2_password”,为了方便,暂时需要改回“mysql_native_password”认证插件。
初始化 MySQL 服务
采用 cmd 进入解压后的 bin 目录,输入 mysqld --initialize --console
mysql 会在和 bin 同级目录下产生 data 文件,即 root 的数据库,并产生如下红框中的随机密码(如果没有密码,可以使用 mysql -uroot -p 直接登陆),对应账号为 root。在没有更改密码前,需要记住这个密码,后续登录需要用到。
安装 MySQL 服务
还在 bin 目录下执行命令
后面的服务名可以不写,默认的名字为 mysql。当然,如果电脑上需要安装多个 MySQL 服务,就可以用不同的名字区分了,比如 liboMySQL
在 mysql 的 bin 目录下面执行: mysqld --install
报错信息如下:Install/Remove of the Service Denied
解决办法:打开 cmd.exe 程序的时候选择“用管理员身份打开”。
出现上述信息则标识成功安装
启动 MySQL 服务
输入:net start [服务名]
登录 MySQL 服务
登录指定端口 3336
命令如下,这时候会提示输入密码,使用上面安装时给的随机密码,填入即可登录成功,进入 MySQL 命令模式。
修改密码
刚才生成的是临时密码,得改。
卸载 MySQL 服务
停止服务
net stop libomysql(服务名)
卸载服务
mysqld --remove libomysql(服务名)
参考资料
https://www.cnblogs.com/2020javamianshibaodian/p/12933674.html
https://www.jianshu.com/p/647a596cb251
https://www.jb51.net/article/218165.htm
https://blog.csdn.net/qq_32448349/article/details/81701355
版权声明: 本文为 InfoQ 作者【李浩宇/Alex】的原创文章。
原文链接:【http://xie.infoq.cn/article/0a04e9a5ee905eb4c166cf85b】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论