00:00
哈喽,同学们大家好,我是上午的讲师宋康啊,江湖人称康师傅是吧?好,那我们接着呢下篇的学习,上篇的话呢,咱们是讲的叫MYSQ的基础篇啊,主要呢,针对是零基础的同学呢,我们进行了讲解,那欢迎呢大家继续来学习,咱们的下篇叫做高级特性篇啊,这儿呢,我一共分成了四大篇章啊,分别对应的叫做MY的架构篇,索引及调篇、数篇和日志与备份篇。那么这四大篇章里边呢,我们一共融合了有19个章节啊,对应的就是我们这里边儿的课件是从零一章啊,到这个第19章啊,一共是19个章节。好,那一贯呢,我讲课的时候呢,都会通常说叫大处着眼,小处着手啊,小处着手呢,就是我们具体的去了解某一个具体知识点的使用了啊,那么为了便于大家呢,更好的去学习我们的下篇啊,做到这个心里有数,那首先呢,我们的大处导演一下,看看我们这些篇章里边具体的都讲哪些基本的内容。好,为了便于呢给大家去做这个讲解啊,我这里提供了一个思维导图,那思维导图呢,一共是由啊九个小节,这九个小节当中呢,从零一到零五,其实对应的就是我们的上篇的内容啊,大家呢,一看这个目录的目录的梗概呢啊,应该也能了解啊,这是我们上篇的内容对吧?那么下面的内容呢,我们是从零六呢,一直到零九啊这些篇章,好,那我们就直接呢从零六开始来看。
01:21
啊,那么零六呢,我们称为呢,叫MY的这个架构片啊,一打开呢,发现里边这个信息量呢,也比较大是吧,那我们一个个来看,首先的话呢,我们的第一章啊,讲解一下在Linux环境下MYSQ的一个安装。咱们讲上边的时候呢,咱们是不是都是在Windows环境下进行的安装,对吧?啊对于这个零基础的同学来讲啊,大家对Windows环境呢,更加的适应,更加的了解,所以呢,咱们就在Windows下呢进行讲解了,那么为什么我们下边开始在0NU环节呢进行安装呢?呃,大家想必也非常的清楚啊呃,就是对于已经开发过的同学呢,应该很清楚的,就是诶,我们实际场景当中啊,生产环境当中MYS呢,通常都是部署在这个Linux环境下的,所以我们下边的话呢,就是更加的贴近于实战了,我们上来呢,就在Linux环境下呢进行一个讲解,OK,所以呢,首先安装,那安装好以后呢,基本的知识点的使用啊,这个我们也讲解一下,然后的话呢,诶,我们需要去熟悉一下,在LIS这个环境下呢,MYSQL的一个数据目录。
02:17
啊,主要目录,比如我们存放相关的这种指令是在哪儿,文件呢?存放在哪,配置文件呢,是放在哪儿,这个呢,我们要做到这个心里有数,同时的话呢,我们还要了解一下啊,不管你是MAS5.7还是8.0,那么在底层存储的时候呢,它对应的这个数据格式是什么样子的,OK,这个呢,就是我们的第二章,那么第三章呢,我们讲一下叫用户与权限管理。咱们没有在上片当中讲这个用户和权限,对吧?我们在上片的时候呢,呃,自始至终操作,咱们是不是都是拿的这个root用户进行了操作,对吧?那么在实际生产环境当中啊,我们说入的用户,他的权限呢,是非常大的啊,我们把它分配给具体的这个,呃,数据库管理员呢,呃,可能不是特别的妥当啊,那这时候呢,我们就需要呢,创建新的用户了啊,那么我们下篇当中就会讲到关于用户的一个创建、修改、删除等等,那同样的话呢,你创建了用户之后呢,我们需要赋予它相关的权限啊,这就是权限的一个管理的问题。那么在MYSQL8.0当中,我们引入了角色这样一个概念啊,这个其实在Oracle当中很早之前就有了角色啊,呃,咱们MYSQ呢,引入的比较晚一些,那么我们可以给角色呢,去赋予相关的权限,然后呢,把这个角色呢付给这个用户。
03:25
OK,这就这样一个过程,行,那我们讲到这个零三章的时候呢,我们看一下具体这个操作是什么样子的,那在实际生产环境当中呢,我们对于数据库管理员呢,通常都是给他们分配具体的一些啊,限定指定权限的一些用户,OK,那么第四章呢,我们称为呢,叫做逻辑架构。楼架构啊,就是要想我们后续呢去讲解这个调优啊,大家最起码底层得知道,我们卖S后这个数据库服务器呢,它的诶架构的这个层级分别对应的叫做连接层,服务层,引擎层和存储层,那这四层当中呢,分别具有哪些结构?
04:00
那清楚了这些呢,我们才便于是不是接下来呢去谈这个circleq的讲执行流程,讲circleq的优化,对吧?呃,咱们在讲上面的时候呢,提到过这个circleq的一个执行顺序,那我们当时把这个查询,以查询为例呢,咱们做了一个解是吧,先从from入手,然后where啊,然后呢,再接着等等等啊,Group啊啊这样的一些顺序去执行,那咱们在这个下面当中啊,咱们就要看一看这个S,它执行跟我们这个,呃,这个叫逻辑架构啊,这几层结构呢,是怎么合在一起的,哪一个部分呢?负责的具体功能啊又是什么,这个大家呢需要啊清除,因为这个清楚以后呢,才能够支撑我们接下来是不是去学习这个调优,对吧?OK,那包括呢,关于我们说数据库缓冲池是一个什么概念,做什么用的啊,到时候我们再说。呃,下一个呢,叫做存储引擎,这个存储引擎呢,实际上针对的就是我们这个逻辑架构里边的这个第三层,叫做这个引擎层,对吧?那这个引擎层呢,就涉及到数据的具体的一些存储啊方式啊,存储引擎,存储规则啊这样的一些内容,那存储引擎的话呢,我们说是有很多的啊,那这里边咱们重点要讲解呢,叫做DB和这个MY啊,也称为叫MY是吧,为什么呢?因为这个MY5.0之前呢我们用,呃5.5之前是吧,咱们用的是这个MY啊,点之后呢,我们就是这个默认的就叫动DB了啊,当然我们在创建表的时候呢,可以显示的去指定你用的是哪个存储引擎,OK,还包括呢,像这个r csv memory啊等等,我们看一看不同的引擎都有哪些不同的特点,OK。
05:33
然后再往下的话呢,我们来谈一谈DB的数据存储结构,数据存储结构啊,什么个概念呢,就是我们来谈一谈,咱平时呢,写库的时候呢,一条数据,那么在底层它到底是怎么存储的这一条一条的数据呢,以及呢,我们这个数据如果在内存中去使用的话呢,它是怎么一点点加载的呢,这个呢,也就直接影响到了我们后续的关于调优的问题。所以呢,我们从调的角度来讲的话呢,也有必要呢,去熟悉一下我们这个存储的结构,OK,那么这个存储结构里边呢,从小到大的顺序呢,分别是什么呢?我们说首先提出了一个叫行格式。
06:08
啊,提出一叫行格式啊,当然有具体的好几种格式是吧?诶这个特点也各不一样,那么一行一行的数据呢,我们实际上是存储在这个页当中的,那页的话呢,又存储存储在这个区当中,区呢又放在段里边,段呢放在这个表空间里,那对于表空间呢,可能大家就有一个概念了,哎,咱们之前呢,也稍微提到过啊,像这种系统表空间啊,独立表空间啊这样的这个概念,所以最外层的这个叫做表空间结构啊,意思呢,往里推,推到最里边,那我们称为它叫行格式,大家呢,其实就可以理解成我们写SQ的时候呢,比如说你insert的一啊,具体的一条记录,我们就称为一行数据,或者我们查询的一条记录,我们就称为了一行数据啊,其实就是一个行格式。OK是这样子的,当然具体细节的话呢,东西很多,我们到时候呢,讲到这一章的时候呢,再展开来说明,好这呢,其实就是我们说的只是第一个这个篇章叫做架构篇,对吧?那么第二个篇章叫索引及调优篇,这个呢,从实际开发场景上来讲,对于应用层的,嗯,比如说大家做这个后台开发的这个同学来讲,包括呢,做这个数据库开发的同学来讲啊,呃,意义是很大的啊,这个这个叫什么功利点讲,在面试当中啊,这块呢,问的是非常的多的,OK啊,或者说是不得不问的啊。
07:20
肯定会问的哈,这样的内容。好,那么首当其冲的话呢,我们来谈一谈这个所以的这个数据结构啊,这个大家呢,了解的同学都知道,所以呢,底层咱们选的是这个B加数,那B加数的这是啊,B加数呢,是一种数据结构了,首先呢,你得清楚这种数据结构,以及呢,为什么咱们底层选择B加数,而没有选择其他的一些数据结构啊,我们也会讲到这个问题,那这个所以的话呢,一提到他,他的作用是什么呢?呃,很多这个老师啊,包括呢,网上的一些视频或者帖子呢,经常会提到,所以呢,大家就可以理解成一个书的目录。那实际上的话呢,我觉得诶,这个类比成一个书的目录啊,是不是妥啊,不是太妥当的啊,嗯,那如果说呢,要举例的话呢,我们其实可以把它类比成咱们大家呢,上学的时候,去图书馆,图书馆的时候呢,那这个图大家应该并不陌生是吧?那这里边儿呢,是不是存放的一本本书,就好比是我们一行一行的数据,那这呢,你看还有一些这个标识提示,整个这个结构其实就构成了我们的索引。
08:20
啊,当然呢,举这个例子我觉得是更合适的啊,当然这里边儿这里边儿呢,咱们还不能展开给大家去说,咱们讲到这一章的时候呢,再说OK。然后的话呢,我们就可以谈谈,比如说这个索引的创建啊,具体我们该如何写代码去创建这个索引,以及诶这块的意义就很大了,在哪些情况下呢,我们适合创建索引,在哪些情况下呢,不适合去创建索引啊,在面试当中这块呢,特别好使啊,像我最初在学习这个数据库的时候呢,像这里边提到的这个规则,诶,好多都是死记硬背的啊,然后今天背啊,明天面试啊,后天就忘了,对吧?那么我说呀,诶,在咱们讲这个下篇的内容当中啊,我其实最讨厌这个死记硬背的啊,尽量呢,都是希望把这个东西呢,就是融会贯通啊,能够理解了是吧,然后呢,大家再去熟悉,应该就呃很难忘掉了,那那么在大家呢,对这个毕加数结构有一个清晰的认识之后,我们再来谈谈这个规则呢,其实就是水到渠成的啊,到时候大家我们一讲你就知道了哈,也就说这里边提到的像12条规则,七条规则呢,到时候我一说咱们基本上就是跟坦克一样,就往前平推就行了。
09:29
啊,对于大家来讲呢,都不是什么障碍啊,因为我们对底层的东西结构是很清晰的,OK,然后呢,我们再谈一谈,这个叫呃性能分析工具啊,我们要使用性能分析工具的原因,自然而然呢,是我们需要做系统的一个啊数据库的一个调优,对吧?那调优的话呢,我们总得需要用一些工具呢,做一些查看吧,这里边儿呢,就提到了一些相关的工具。啊,像慢查慢查询日志啊,像我们查看这个搜Q的执行成本呢,包括plan是吧,这里边比较重的一个内容呢,叫做plan啊,到时候我们重点来进行一个讲解,OK,呃,那么在关于调优方面啊,这块我提供了好几个,这个内容分别对应的叫索引优化与查询优化啊,还有这个数据库的设计规范,还有数据库的其他的调优策略啊,这呢,其实是一个从小到大的一个顺序啊,这两个呢,算是并列关系啊,整体上来讲,我们其实都要服从于数据库的一个调优。
10:22
OK,那索引优化和查询优化啊,其实我们重点来讲呢,其实叫做这个查询优化了,查询优化的话,我们还可以分成这个叫物理的层面的优化和逻辑层面的优化,那所以呢,只是其中的一个方面而已哈,当然我题目呢是这样来写的啊,主要是为了凸显一下这个索引本身的一个优化,所以这里边儿呢,我们就提到了,所以呢,在我们创建好以后呢,在哪些场景下它就失效了,这个是需要大家重点关注的,并不是说呢,我们创建了索引,它就一定在查询的时候呢,会使用上啊,错误的一些SQ写法呢,会导致索引失效。OK,还有关于呢,叫关联查询的优化,子查询的优化排序group by,还有日常编写SQ的一些规范啊等等,我们都会讲到,那数据库的设计的规范,我们主要讲的呢,就是表,那么错误的或者不合适的一些表结构的设计呢,也会导致我们的这个查询的性能不够。
11:14
啊,我们所谓呢叫巧妇难为无米锥之炊,对吧?你写的这个circle呢,再漂亮,这个表结构设计的有问题,那我们说呢,最后的这个效果呢,可能也不会特别好啊,这里边儿我们要提到啊,这里要看到六大范式是吧?哎,这是第一范式,第二范式,第三范式,八次范式,第四范式,第五范式啊,六大范式啊,讲完范式之后呢,我们还谈一谈,在实际这个设计表的过程当中啊,咱们还甚至还要违反这个范式的一些规则啊,称为呢叫反范式化。啊,为什么要这样做啊,到时候咱们再说。还有呢,这个叫ER模型啊,这里边提到了这个叫实体啊属性还有关系对吧,咱们在上篇当中啊,实际上呢,一开始的时候也提到过这个ER模型,那我们下片的时候呢,通过表在设计的这个环节,咱们实际上拿一些案例啊,给大家去说明一下我们如何去设计啊一个系统当中的多个表啊,以及呢,去来设计他们之间的这种一对一,一对多和多对多的关系啊OK。
12:12
好,然后呢,我们再来谈谈一谈啊,数据库其他的一些调策略啊,包括我们从这个呃,数据库的一个级别上啊,数据库我们涉及到一些硬件是吧,硬件的一些优化,还有呢,这个软件层面的一些参数的优化啊,这个这个这个还有我们这个数据,数据库的这个结构上的一些优化啊,还有我们关于大表的一些优化等等啊,到时候我们再统一的讲解,应该说呢,我们这个索引和调一篇呢,这里边内容已经是非常的厚重了啊,就是你如果说仅仅是为了学习,我们这个下边呢,是为了映红面试啊,我觉得的话呢,已经是绰绰有余了啊。那这个下一篇呢,叫做这个事务篇啊,事物呢对于我们MYS库数据库来讲也是非常的重要的,OK,行,那事务这块呢,我分成了这样的几个章节,首先呢是基础知识,大家呢需要知道我们事物处理的原则,还有它对应的ACID4个属性啊,隔离级别啊,这个是都需要熟悉的。
13:05
在面试当中啊,这也属于这个啊,非常爱问的这个点啊,它有难度有深度啊,还还很重要对吧?好,那么下一边呢,就是关于my school叫呃事务日志啊,日志的话我分成很多种,这里边呢,我们先来谈事务日志主要对应呢,叫做锐度日志和安度日志啊,锐度日志呢,我们来保证咱们说的事务里边呢,有一个叫做持久性,对吧,那么这个持久性的话呢,我们可以通过这个锐度日志啊来进行一个。这个这个这个实现是吧,然后这个安度日志的话呢,呃,其实是涉及到我们数据的一个回滚问题了啊,要么都执行成功啊,要么呢就都回滚啊,这个时候呢,其实通过安度日呢,可以来保证我们的这个原始性,包括像这个一致性啊,然后下面的话呢,我们提到非常重要的一个概念叫做锁啊,这里边儿呢,我们从不同的角度呢,对锁来进行划分,进行剖析啊,应该是比较透彻和全面的。啊,这里边儿大家基本上你再去学习其他的关于MYSQ的视频当中啊,诶我想应该不至于比我这里边讲的锁还多了哈,因为我已经是讲全了,OK,那么通过锁的话呢,我们能够很好的实现事物的一个隔离性啊,到时候我们看看如何去实现的。
14:15
最后的话呢,关于事物篇,我们再讲一个叫多版本并发控制,那我们统俗称呢,叫MVCC啊,Multi这个version,这个concurrent control对吧,简称MVCC,那这里边我们看它主要解决的问题是什么,这呢对应的就是我们整个的叫事务篇,最后一篇呢,我们称为叫日志与备份篇,这边会涉及到关于数据库的一些运维相关的一些内容啊,比如说首先呢,呃,提到了各种各样的这个日志啊,像里边比较重要的,我们想实现这个读写分离,主通复制是吧,我们会用到这个二进制的日志,包括呢,面试当中也经常会问到二进日志和我们上篇讲到的个锐度日志呢,他们二者的一个区别啊,作用是吧,到底是什么?还有呢,像慢查询日志啊,通用查询日志这个这个中级日志啊,等等这样的一些错误志啊,一些日志的信息,然后呢,我们接下来谈一个内容就是诶主从复制啊,为了能够缓解我们这个高并发的这种压力啊,那主从复制呢,这块我们更多的还是从这个MYSQL本身的这个呃特性来进行触发讲解的。
15:15
那至于说呢?在实际生产环境当中,我们可能会用到一些数据库的中间件,比如说my cat。那么在我们这里边呢,我就不详细的去讲解ma cat了,诶大家呢,可以专门的去,比如说在B站上去搜索这个MY啊,咱们商贡呢也专门发表发布过是吧,这个买cat这个视频啊,咱专门去看就行啊,我这里边呢,就不把买cat再融进来了,这个内容量那就太大了啊,没有必要行,然后呢,我们在关于这个数据库的一个备份恢复啊,OK,这样的一些内容,整个的话呢,就构成了我们的这个第零九日志与备份篇,好那么整体上大家来看一看,咱们一共呢,是有九大篇章啊,对应的是我们的,呃,这个之前已经录制的上篇,还有我们呃即将这个录制的这个下篇,应该说呢,对于一个小白来讲啊,这个整体的成长之路啊,我们MYS库的各种各样的特性和基本使用差不多呢,就是这个。
16:07
暴露进来了啊,对于大家如果是处于应用层的开发的话,比如说你是做Java后台的开发的是吧?诶不如包括像购物语言呀,包括Python语言啊,我们需要呢,学习这个数据库的同学来讲,那么我们整个的上篇和下篇内容加在一起,应该对于帮助到你工作是绰绰有余的啊,面试呢更是不在话下啊,那么对于相对应的一些DBA同学的学习来讲,我觉得也是非常有意义的啊,只不过呢,在这个基础上呢,还需要呢再深入一些啊,举个例子啊,比如说呢,我们在讲到这个事务篇的时候呢,像锐do和安度呢,我们就不会详细的去剖析里边的具体的这个,比如说锐do buffer啊,里边的细节的某一个具体的属性啊,它是什么意思了啊,重要的我们说不会每一个都说啊,每个都说的话呢,恐怕只是针对于呃,像DBA他们甚至说呢,去开发一个数据库,呃需要呢,你自己来去设计这个日志的话呢,我们才会讲的那么细,对吧?啊对于我们应用层开发来讲的话呢,咱们也会讲这里边的细的点。
17:07
但是呢,主要的一个主旨思想还是基于我们的应用,OK。好,那这儿呢,一共是咱们对应的是从零一到零九这些篇章的内容啊,大家做到这个心里有数啊就可以了啊,那么关于我们整个这套课程的一些评价呢,这个相当也看成是一个广告了,是吧,课程好不好,学生反馈呢,是疗效。嗯,这个呢,是之前我在这个线下咱们商务线下班的时候呢,给一个班的同学讲过我们这个高级特性这个章节的内容,但是呢,没有讲权,只讲了其实也就不到五成的这个内容,OK,嗯,左边这个同学呢,相当于是这个在面试的时候呢,说后悔没有当初好好学了,发现呢,在面试当中关于麦克问的内容还是比较多,比较深刻的啊,而这里边的这些点呢,其实上在我授课过程当中啊,都是有讲解过的。啊OK,然后这边这个同学呢,相当于是实际呢,去做了面试啊,发现呢这个呃,这个面试问到这个思呢,还都还能够应付的上是吧?呃,这个说还是不错的啊,最后呢,这个工作呢,只是他自己啊拿到的几个offer啊几个offer,然后其中最后呢,选择了是18.5,这个呢,最后给他加价到22K了,然后直接去工作了。
18:16
也就是说呢,咱们这套课程呢,诶,我觉得啊,对于大家的帮助应该还是比较大的好,那咱们这个这套课程的这个特点的话呢,诶我这儿呢,就罗列出来,我就不一个一个去念了啊,咱们在上篇当中呢,融合的这个呃实呃这个谈不上叫实操了啊,就是课后的这种练习题比较多一些,那么咱们下篇的话呢,更多的是融合这个实际的项目案例的剖析了啊,就相当于对于大家不管你工作过也好,还是没有工作过也好,那么我们都是通过真实的案这个项目案例啊,来增加大家的实战经验啊。好,然后这里边呢,我们也融合了关于像阿里巴巴,呃,比如说在这个它的这个Java开发手册里边,关于卖的开发的一些规范,还有其他的一些企业当中的一些规范啊,通过实际的针对于咱们已经毕业的同学的一些调研,这儿呢,我都融入到咱们相关的这个内容当中了啊OK,行,那么废话不多说,接下来呢,欢迎大家进行我们下篇的学习。
我来说两句