大家好今天又与大家见面了。IT技术无领域、国界之分,不断学习最新技术走在IT技术前沿一直是我们的目标网站模板下载争取把自己所学的知识,所经历的经验,拿出来与大家分享,共同成长与进步。在当前这个群雄并起的大环境下,与其分开时各自牛逼,不如在一起时天下无敌!

在这个开源数据库纷纷而起的时代,我们一定要找准自己学习的一个方向,不要盲目地去做一些无用功,而浪费自己的时间。在这些众多开源数据库当中,龙头大哥毫无疑问就是MySQL。听过老张课的人,都知道我经常把MySQL比喻成数据库界的一条巨龙。想要学好用好MySQL数据库,就需要屡清这条“巨龙”的所有脉络特点。下面老张把学习MySQL数据库的所有知识点用线路串联起来。让大家知道我们必须掌握的知识要点。如下图

是不是看完之后,感觉要学习的内容有很多。各位兄弟们千万不要着急,老张我精修了一套学好MySQL数据库的秘籍,给这套秘籍起了一个名字,就是丐帮神技"降龙十八掌"。MySQL属于那种特别接地气儿的数据库,它并没有像是Oracle那种高消费产品,既可以覆盖众多互联网公司,又可以在性能上发挥出巨大威力。所以我觉得丐帮的武功最适合形容MySQL了。此掌共分为5大部分、18招式:依次为MySQL体系结构篇,MySQL实战篇 ,特性与优化篇,监控与升级 ,就业面试宝典篇。

前期的基础理论比较多,大家不要产生学习的厌烦心理。最为核心的原理我们如果能够掌握,那么后期才能把MySQL用得游刃有余。那我们还在等待什么呢,赶紧开启这套MySQL"武功秘籍"的学习吧。

我们先进入第一部分的学习

体系结构篇中的第一掌:亢龙有悔。
本掌主要对MySQL有个整体介绍。包含介绍最新版本8.0的新特性。目的就是为了让大家对MySQL有更深的认识。

初识MySQL

1999年至2000年,Monty成立了MySQL AB这家公司。2000 年,MySQL公布了自己的源代码,并采用GPL(GNU General Public License)许可协议,正式进入开源的世界。 2001年至2007年是MySQL开源飞速发展的7年,尤其是在2005年10月发布了一个里程碑式的版本MySQL5.0。

5.0版本中加入了存储过程、服务器端游标、触发器、视图、分布式事务(Xa transactions)、查询优化器的显著改进以及其他的一些特性。这也为MySQL5.0之后的版本奠定了迈向高性能数据库的发展基础。2008年1月16号Sun收购了MySQL,花了10亿美元。之后不久,2009年4月20日Oracle收购了Sun公司。随之MySQL就变成了Oracle旗下的一个产品,之后就是我们所熟悉的MySQL5.5、5.6、5.7这些版本了。

确切一点说,MySQL5.5应该是Sun和Oracle之间的一个过渡版本,实际上MySQL5.6才是Oracle开发的第一个版本,在MySQL5.6的基础上,Oracle对MySQL进行了一次强悍的加工,才有了 MySQL5.7的问世。

MySQL分支版本介绍

目前MySQL主流的分支版本有Oracle官方版本的MySQL、Percona Server、MariaDB。接下来看一下各个分支的特点。

目前MySQL官网最新的GA版就是MySQL8.0.11,虽然MySQL8.0在新特性上没有新元素的加入,但是它对MySQL的源代码进行了重构,最突出的一点就是对MySQL Optimizer优化器的改进,支持隐藏索引等功能。这个版本将使MySQL数据库又进入一个新的开拓时代。

下面就顺势总结一下MySQL8.0版本的新特性

1. 新增了事务类型的数据字典,所有的元数据信息,都用InnoDB存储引擎进行存储。8.0之前的版本中,我们知道Server层和InnoDB引擎层有两套数据字典表。其中Server层部分的数据字典,存储在.frm文件里面。而InnoDB存储引擎层也有自己的数据字典表,在information_schema库下面的 tables表中进行存储。
这种方式的最大问题就是:数据字典信息改动很难同步,而且两个字典信息库很难保证一致性,根结就在于DDL操作不是原子性的,对数据字典的更新不是事务性的。

老数据字典结构图:


看图说话:文件层面存储在文件系统上,系统表层面 用MyISAM存储引擎存储,而InnoDB存储引擎的数据字典(存储在information_schema库的tables表中)。这样看起来层面太多,存储结构很乱。

新数据字典结构如下图:

看图说话:新的数据字典,不仅简化了层面结构,而且Server层面和InnoDB层面的数据字典进行了合并。数据字典信息全都存储在InnoDB存储引擎里面,实现了原子性的DDL。InnoDB也可以保证对于数据字典表的更新是事务性的。并可以通过视图(views)的方式来查看数据字典,查询性能提升近百倍。

其次目前只有唯一一个数据字典源,所以我们对它的访问可以通过唯一 一套加锁机制来实现。主要是通过server层面的元数据锁,简称MDL.通过这个来实现对数据字典表的并发访问。好处就在于InnoDB内部数据字典相关的锁就会被优化掉,并发性能得到提升。最后一点就是Server层面比起之前版本,会接受更多的任务,InnoDB存储引擎逐渐减少了工作量。让InnoDB可以挥发其最大作用。MySQL8.0版本,所有数据字典信息和系统表都存储在mysql.ibd(不允许用户自己创建)

注:临时表的信息不会记录到数据字典里面,仅仅保留在内存部分,这样维护效率比较高。

2. 角色管理。
创建角色命令:CREATE ROLE 'zs_read', 'zs_write';

角色授权:
命令如下:GRANT SELECT ON test.* TO 'zs_read'; GRANT INSERT, UPDATE, DELETE ON test.* TO 'zs_write';

给用户赋予角色:
命令如下:GRANT 'zs_read' TO 'zs_ro'@'localhost'; <br/>GRANT 'zs_read','zs_write' TO 'zs_rw'@'localhost';

使用角色可以方便地对用户权限进行管理。

3.配置持久化
MySQL 的设置可以在运行时通过 SET GLOBAL 命令来更改,但是这种更改只会临时生效,到下次启动时数据库又会从配置文件中读取。

MySQL 8.0新增了SET PERSIST 命令。命令如下:

set persist sync_binlog=1;

MySQL 会将该命令的配置保存到数据目录下的 mysqld-auto.cnf 文件中,下次启动时会读取该文件,用其中的配置来覆盖缺省的配置文件。

4.字符集
从 MySQL8.0 开始,数据库的缺省编码将改为 utf8mb4,这个编码包含了所有 emoji 字符。

5.隐藏索引
开始支持invisible index,在优化SQL的过程中可以设置索引为不可见,MySQL优化器便不会利用不可见索引。我们可以通过隐藏该索引,来观察对数据库性能的影响,好的话就留下,不好就删除。
用法:

alter table t alter index column_idx invisible;

6.支持DDL 原子操作
InnoDB表的DDL支持事务完整性,要么成功要么回滚,将DDL操作回滚日志写入到data dictionary 数据字典表 mysql.innodb_ddl_log 中用于回滚操作。

7.直方图的引入
MySQL 8.0 版本开始支持期待已久直方图。优化器会利用存储在I_S的column_statistics的数据,判断字段的值的分布,得到更准确的执行计划。
用法:

ANALYZE TABLE table_name [UPDATE HISTOGRAM|DROP HISTOGRAM]

8.支持会话级别SET_VAR 动态调整部分参数,有利于提升语句性能
用法:

select /*+ SET_VAR(sort_buffer_size = 16M) */ name from people order y name; 
insert /*+ SET_VAR(foreign_key_checks=OFF) */ into t2 values(2);

以上就是MySQL8.0主要的新特性。

下面总结一下MYSQL8的概要:Percona Server是MySQL重要的分支之一,它基于InnoDB存储引擎的基础上,提升了性能和易管理性,最后形成了增强版的XtraDB引擎,可以用来更好地发挥服务器硬件上的性能。所以Percona Server也可以称为增强的MySQL与开源的插件(plugin)的结合。由于官方版本的MySQL在一些特性的使用上有一定的局限性,需要收费。所以Percona Server就有了一定的市场占有比例,也比较受大家的欢迎。像一些常用的工具包xtrabackup、percona-toolkit等,在生产环境中是DBA的必备武器。还有像XtraDB-Cluster这种支持多点写入的强同步高可用集群架构,真正实现实时同步的过程,解决了MySQL主从复制之间经常出现并让人头疼的延迟问题。而且Percona还收购了TokuDB公司,TokuDB存储引擎非常优秀,淘宝网、阿里云上大量在使用这款存储引擎。它支持数据压缩,支持hot scheme modification,它的高扩展性和查询插入性能之快都是我们喜欢它的地方。

Mariadb是由MySQL创始人Monty创建的,是一款高度兼容的MySQL产品,主要由开源社区维护,采用GPL授权许可。Oracle把MySQL收购之后,为避免MySQL在开源粒度上的下降,MariaDB由此而生。它不仅仅是MySQL的一个替代品,还创新与提高了MySQL原有的技术。既包含了Percona的XtraDB存储引擎,还包含TokuDB存储引擎、Spider水平分片存储引擎等多种存储引擎,并且还有一些复制功能上的新特性,像基于表的并行复制、Multi-source Replication多源复制、Galera Cluster集群。

标识标牌识标牌网站就是用的是MYSQL8!

关于MySQL 8.0的几个重点新特性及其他版本浅谈相关推荐

  1. mysql cte的好处_Mysql 8 重要新特性 - CTE 通用表表达式

    前言 Mysql 8 正式发布了,新增了很多优秀特性,之后我会挑些重点来分享. 下面和大家一起熟悉下CTE(Common Table Expressions)通用表表达式. CTE 是什么 派生表大家 ...

  2. android5.0后新特性修改标题头,Android5.0中Material Design的新特性

    Material Design简介 Material Design是谷歌新的设计语言,谷歌希望寄由此来统一各种平台上的用户体验,Material Design的特点是干净的排版和简单的布局,以此来突出 ...

  3. Mysql Connector 5.1 好用的新特性

    Mysql Connector 5.1 好用的新特性 转载自并发编程网 – ifeve.com本文链接地址: Mysql Connector 5.1 好用的新特性 Mysql Connector 5. ...

  4. Android Studio启用新代号,新版本Arctic Fox(白狐)重点新特性一览!

    目录 Android Studio 新的版本命名规则 Arctic Fox 有哪些新特性? 总结 对于Android开发者来说,Android Studio 是我们首选的开发工具,它基于强大的Inte ...

  5. mysql 6.0 新特性 2014_MySQL 各版本的特性

    Mysql5.5 特性,相对于Mysql5.1 性能提升 默认存储引擎更改为 InnoDB引擎.具有提交.回滚和宕机恢复功能 和ACID兼容. 行级锁. 表与索引存储在表空间中, 表大小无限制. 支持 ...

  6. MySQL数据处理之增删改,MySQL8新特性计算列,完整详细可收藏

    文章目录 1.插入数据 2.更新数据 3.删除数据 4.MySQL8新特性:计算列 1.插入数据 1.1 方式1:VALUES的方式添加 情况1:为表的所有字段按默认顺序插入数据 INSERT INT ...

  7. mysql 5.7 ddl 原子_mysql 8 新特性二DDL操作的原子化

    MySQL 8.0支持原子数据定义语言(DDL)语句.这个特性被称为原子DDL.原子DDL语句将数据字典更新.存储引擎操作和与DDL操作相关联的二进制日志写入组合成单个原子操作.即使服务器在操作过程中 ...

  8. mysql计算三角形斜边_MySQL 5.7新特性之Generated Column(函数索引)

    MySQL 5.7引入了Generated Column,这篇文章简单地介绍了Generated Column的使用方法和注意事项,为读者了解MySQL 5.7提供一个快速的.完整的教程.这篇文章围绕 ...

  9. mysql cte 表不存在_MySQL8的新特性CTE

    [瞎BB] 十一长假的最后一天,想到明天要就回去上班了:内心的激动无法用平常的言语来表达,可能是国人的感情向来比较内敛(这个锅不能我一个人背) 也可能是我们比较重行动(Just Do IT).但... ...

最新文章

  1. Tomcat中文乱码问题的原理和解决方法
  2. 【云中沙箱】视频直播技术浅析与实践!
  3. Vue.nextTick和Vue.$nextTick
  4. 2020年10月21日 星期三 工作日志
  5. GIS实战应用案例100篇(七)-基于GIS和ENVI的矢量化提取水体边界
  6. C风格字符串与C++风格字符串
  7. 数据库表名大小写_某教程学习笔记(一):09、MYSQL数据库漏洞
  8. Spark精华问答 | RDD的核心概念是什么?
  9. 基于android的考勤管理系统,基于Android的考勤管理系统的设计与实现
  10. 程序员,活得是本事:30 岁后的 人生建议
  11. Redis学习笔记(三)
  12. windows知识点
  13. 蓝桥杯-基础练习 十六进制转八进制
  14. SSh三大框架工作原理介绍
  15. C语言-除法和取模运算正负号问题
  16. 两台计算机直连怎么写ip,两台电脑直连(两台电脑用一条网线连接)
  17. STM32F简单应用
  18. 有房间匹配和无房间匹配
  19. 京东EB级全域大数据平台的演进与治理历程
  20. 微信:用户账号绑定到微信公众号的方法

热门文章

  1. js实现-九九乘法表,代码详细,无删减
  2. 电脑怎么设置固定IP地址上网
  3. Java 编写斗地主游戏 窗体程序 完整源码
  4. dateTimepicker 设置默认日期的方法
  5. python使用turtle库绘制一个100长度的十字架_python - 09【turtle库的使用(绘制小猪佩奇)】...
  6. 汽车电子电气架构演进驱动主机厂多重变化
  7. Pyton-OpenCV中的图像处理 » 形态变换
  8. OpenCV+MFC文档视图结构 构建简易PS图像处理软件
  9. 物联网工程实践第十天
  10. HTTP代理测试小程序