00:00
MYSQL的逻辑架构介绍,那么这个时候我们呢,总体呢来说一下,首先大家都知道大家好,咱们在做日常的Java软件开发的话,当然一定是干过JSP controller service到MYQL,是不是有一个分层的概念,好那买CQ呢,也有这样的一种情况,好大家呢想一下我们买CQL,大家想我们从连接到他自己去处理主人你所提交过来的SQL,最终。调用出数据传输给你,然后这一个过程它跟我们刚才的所说的那个分层开发呢有点类似,它呢逻辑上我们来看看官网上也有它相关的介绍程图,好,那么这我先停十秒钟,大家先看一眼,好给同学们呢稍微呢看了一下来,大家请看哈,我们呢自顶向下逐步求精的策略,来延习一下这些东东,来看看MYSQL的它的逻辑架构上有些什么组成和结构,那么换句话说地球们抬头,这就好比说咱们都知道CR2层,咱们是不是写那些病的拷贝参数的拼装验证,写SVC好service材,如果你碰见什么并注入失败异常找不到。
01:38
各种啰嗦,是不是你的业务逻辑层出问题,最终map层或者倒层的话,那不是哈,Ber就是美或者GPA,那么言下之意,你分层的好处就是隔离范围了以后哪一层出问题你是不是找谁呀?那么好,同学们请看,二话不说,我们最上面大家看是个什么东西啊?我们说过所有技术都可以横向类比,你不可能穷尽所有技术,但是我们来看一下什么naviate c你不懂,GDBC懂不懂?如果是我们所说过的a and b and c and d,一堆下来,各位亲,起码我们横向类比类推的原则,我们会知道从上到下第一层是不是连接层呢?有没有点像我们看法里面的表现层啊?好,往下走,我们看到。
02:38
啊,这个大的这个框框,这个正方形是不是他是my SQL server啊,那么言下之意就是说,就像我们那天所介绍的入职的培训,你去一个公司,老板甩给你一套系统,说兄弟我们这儿很忙,然后呢,有问题你问剩大部分剩下的时间,你是不是都得自己看你当前跑一套系统啊,我是不是说过一句话。
03:00
自己画一个大框框,大框框里面搞几个小框框,比如说我们做过的电商系统,OK,这一个大的就像这样一样,叫my CQ server,你那个是不是叫电商系统啊,那么这个电商系统里面又有几个分模块组成,那比如说用户模块,订单模块,仓储模块,物流模块,积分模块,包括各位同学们,你们到后面。其他的一些模块,那么言下之意,这些东西一个一个一个模块加,那么你就要看看一模块和模块之间是不是我们讲过的rpc double这些相关的调用,然后自己做哪个模块,那么你是不是迅速的入港入行啊,那么一样我们来看看,我们来研究一下往下走这种东西,第一层连接上了以后,这个熟不熟悉啊,我们在讲GOUC的时候,有没有讲过线程连接池,我们大家在用项目的时候,C3P0德鲁基都用过了吧?好,那么言下之意,连接层,然后再来看manager service and YouTube u什么意思啊?那么大家看有备份,有容灾恢复、安全复制集群等等,然后再来看这一小块,SQ interface,那么大家看是吧?
04:27
存储过程,视图触发器等等,DML什么意思啊,也就是说各位亲,你再写一些CQ以后,好把这块也连起来看吧,大家看这个什么意思啊,是不是解析转换的意思啊,这是不是有个漏斗,你看查询的是我对象的权限等等,抬头主人你写CIRC是不是一定写select开头的,我认为就是个读的操作,你只要敢写insert操作这种关键字,我提取以后是不是就一定是个写的操作,那么我那么再来说白这什么意思呢?你这用那种注释。
05:06
全选了以后去执行你写的中文,马斯克,刚才我们去介绍这这个货是不是瑞典公司一家开始干的,他懂什么,他懂中文吗?那么言下之意,你那些注释了以后,言下之意什么再来弄过来了以后,他会根据一些关键词,你是试图查询修改这些关键词跑到这儿统一的,他是不是来做调整啊,调整什么概念呢?咱们要出一个东西,我作为MY的主人,我发布的命令,我是不是关心select某些心,某些某些某些字段,我的大脑所理解的是不是关心select后面的这些信息,但是买S是主人,正是因为你关心这些东西。我的加载顺序,你们五个月前学过MYQL,出去的时候我们都知道Q的语句加载是不是从from开始啊,而MYSQL就会将它重组过滤,然后干嘛呢?从from开始去解析。那么最终同学们看好这。
06:07
所谓的要学这些,就是说你的优化按照他的逻辑架构,哥们儿,你到底优化和组合了哪一个模块。大家有没有看这个模块。这什么意思啊,是不是买色P优化器啊,抬头啥意思呢?买色票发展到现在,他非常的聪明,天生这哥们儿自带的一个优化器,也就是说主人你甩给我的一条色条,也许你。的理解是1234的执行顺序,我个人认为可能人是这么理解的,不好意思啊,主人你发过来的这条SQL,我买SQL通过前面的接口规定分类出它到底是写操作还是读操作,转换了以后该去掉的那些注释去掉,然后读合成,结合处理成。我买SQL自己呢,就像统一编码一样的,我能理解的SQL以后,我会按照我买SQL优化器自己认为最优的方式去运行,也就是说你主人可能你脑子上写的这个表的加载顺序和查询的路径应该是1234,有可能我在那做了以后,会把它理解成为2314。
07:26
那么也就是说在我们所谓的优化,按照逻辑架构上而言优化优化呢,其中有一部分就是优化这一块,我们有可能会将强制索引告诉说MYSQL,按照你默认规则,这这件事儿应该这么办,但是由于我这个需求极端特殊,特事特办,我们加一些强制索引,你非得用上又这么走,那么本来MYCQL走直线,你是不是让他走弯线啊?那么也就是所谓的这块呢,就是MYCQL会优化成MYCQL自己认为最优的,但并不是DBA程序,而认为最优的SQL去运行。那么言下之意以及阿里的话,某些极端特殊情况最狠的就是什么呢?大家想咱们这一块是不是像组建一块一块一块的呀,他把它拔了白色票,你也就别自作聪明了,我阿里的最牛的工程师在这儿,我们已经把我们的买色Q改了,这样吧,你别动脑子了,按照我说的做,你只管一件事,执行行呗。
08:26
我们现在跑这个CQ走不走这块我自己呢,优化过一次买CQ再验证一次,是不是两次啊,这样的话比较慢,而这群变态阿里的搞了以后呢,空了镂空别执行两次,你就按照我们计算好优化里去弄一跑,在那种极,当然这是极端业务的场景,这块时候是不是省略了一次,而且已经被他们人为的优化成我们最所需要最合适我们系统业务的,这个时候它是不是就比较它原声自带的要快呀,那么所以说请大家这流行到后面包括哪些索引为什么会失效,为什么用不上,很有可能就是这些这层出了问题,再来看是那buff法是不是缓存和缓冲啊,那么言下之意,这些模块它结不结合我们的卖点看法。
09:22
言下之意就是比如说最大连接池八份缓冲池的大小,你配两兆和配六兆配100兆是不是不一样啊,所以说第二层将会连接看看。连接池里面捞出来,然后根据你的这些权限备份,看到你的操作,把整条SQL进行处理,那么呢,在第二层,在这个框框里面,我们把它称为我们的类似于我们的什么呀,是不是业务逻辑处理层啊,明白,所以说我们呢,走到了我们的第二层,好,第三层,来同学们读读这个单词啥意思啊,是不是可拔插组件式的存储引擎啊,那么来数数吧,一二三四五六七八九十加,给个面子,少说十种好吧,那么OK,现在也大部分的互联网公司,绝大部分哈,除非你真是去新浪美团那种特殊的项目组或者阿里这样大部分的情况下,弟兄们用的是不是就是MY。
10:36
和DB啊,那么好抬头,这个存储引擎又是干什么呢?是这样一个情况,MYSQ它的设计牛就牛在这儿,分层可拔叉。好同学们,假设你现在呢是一个越野爱好者,你非常喜欢车,喜欢跑车,假设呢,你呢喜欢呢跑跑沙漠。
11:01
冰川、城市三种不同的地理环境同意吗?好,请问三种不同地理环境跟我讲他们的路况以及对汽车发动机、轮胎、底盘的整体性能要求是不是各不相同?最通力的,那你说这来吧,痛快点,咱们是不是一种环境一部车,同意吗?这个是最美好说的,冰川车你就开冰川的,沙漠环境就开沙漠的,城市的你就开城市SUV。好,现在我们另外一种思路,可是你们家车库有限,或者你money有限。你没有办法一种环境配一种车,我们能不能想一种方法,我只能是一辆车,但是我这个车,比如说我去到冰川,我的发动机较耐寒,功率较大,轮胎的抓地能力较强,否则是不是打滑了?我去沙漠的时候,它的防风防尘这种极端环境下的能力较高,那么我到城市以后是不是就普通?那么我们能没有想过一种问题,就是在节约成本和养不了这么多车的情况下,我能不能只养这部车的引擎?假设同样一部车,我去城市,我就就像U盘拔叉一样换上我们的城市路况引擎,如果我去冰川,我是不是就换上我的冰川路面引擎?随着我的可拔插引擎不同的更换,汽车所发挥出的性能和功效各不一样,请跟我讲,这样是不是更加的优化经济和实惠。那么呢,一样MYSQ呢,为了和。
12:35
Or口竞争,且自身的灵活小巧多样,因为or口太贵了,阿里推出了去I化以后,所有的互联网公司几乎都在亦步亦趋的跟着阿里,所以说同学们呢,我们在授课过程当中,我们在什么?是不是就是以现在互联网最新的要求,MYSQL讲的多一点,Oracle就讲的少点,甚至是不讲啊,换句话说什么?那么同学们你们有这个东西的这个基础以后,就好比说你现在会用记事本了,然后用plus是不是也相关啊?那么言下之意,MYCQ呢,到了它这干嘛呢?就形成了它的第三层,是不是叫数据存储引擎层啊?言下之意的意思就是说主人SQ还是我这个SQ,你分区分库、分表,进库建表的时候,言下之意就是同学们都写过这种程序,Public class book可没问题吧,就算你不写明白,其实我要是后面写extend object行不行?
13:35
可不可以默认,是不是都这个,刚才我们也知道咱们建表,比如说各位同学,现在你们都会写create table,你啥都没写,但是默认以5.5以后这些版本的话,咱们着咱们的默认的存储引擎是不是就是这个no dp呀。那么呢,因为它支持什么函锁和事物,当然这个回头我们会分两次细说,但是现在给同学们呢,是一个大概的一个理解,就是说my circle它支持什么多种数据库的什么storage engine存储引擎,目前市面上主要用的主流的是两种,至于这两种有什么区别,我们后续篇章介绍,当然如果你去到的公司说我们这全用过,那么这个时候的话呢,几乎应该在我所知道的话,北京的话呢,应该不能说我还没有听说过哈,至少我去参加的技术论坛和交流峰会的话呢,很少就说我十来种,那数据引擎的话,我每次呢,一开心是吧,都给他换了一遍,我的cqu集群的话,每一台机都很变态的,搞得呢,引擎呢都不一样,因为大家都知道,你要搭建集群的时候,全体最好是不是整齐划一,版本一致,引擎一致啊,那么当然如果有这种公司的话呢,对不对啊,可以搭一。
14:52
小哈,那么这样的话呢,你入行的时候,恐怕你更多的就不是Java开发,你就变成是不是未来的DBA了,OK啊,那么这个时候你就牛了是不是,然后的话呢,等你红的那一天的话呢,就通知我是不是,我就给你写本书嘛,当年这小子在班上可聪明了是吧?认真学习,刻苦勤奋,东方之子采访你的时候不,那时候就采访我了是吧?我帮你写回忆录是吧?比如说你们班班长温同学,怎么哈,我就写一部是吧?温家栋那些事是不是啊,然后呢,请你签名出售对吧?啊,OK,好,那么来再往下,同学们这一层通过了以后,也就是说白了,其实说穿了就是什么,你写的那些s select有没有点像我们ecl eclips点取的一些API啊,像不像?那么这些SQ也是就调用一些方法,这样这样一些接口API了以后,找到存储引擎以后去驱动,去发挥它的功效和能力,最终落地这些管的运行以后,是不是总得有个管存储啊。
15:52
谁管存储呢?大家读读这个词,这叫什么?这个叫什么?那么言下之意,这种图形一看像什么东西啊,这些格式我们装Linux的时候都见过,说白了大家都知道,那么也就是说最终落到底了,你这些东西还是是不是还得跟硬件打交道啊,好,言下之意呢,第四层是不是就是我们最终的文件存储层啊?
16:19
那么言下之你抬头讲这些是干嘛呢?一、对SQ分层设计概念可以理解,二、MYQL是插件式的可拔插的结构,不管你以后做架构,或者你以后做一个系统,你程序能不能写死啊,是不是应该随时可拔插替换向他来学习这个设计模式啊?第三一点你要明白,就说以后胳膊系统慢了,甭着急,你得想出事了哪一层脑子里面就调出这个图,他跟你说,哎呦,如果我们有IO,那种Linux的命令学过吧,就是我们的高级命令star IO star那个看IO特别高的时候,那么言下之意是不是一定会跟第四层有点关系啊,如果到时候天天是什么查的慢,S数据引擎失效,那么一定是不是跟我们第二层业务逻辑,你的SQL写的有问题啊,有点类似于说你会不会不会跑去砍抽ler层,你一定不会在action control抽两层里面,就在这里面写Sq吧。
17:19
你的色是不是一定会放在map和倒层啊,那么OK,这个时候是不是哪层出问题你就找谁啊,你绝对不会说你们家干嘛着火了去打10086,我跟你说聊一下,我们家着火了,你一定是不是分门别类,该谁管就谁管啊。那么结合买CQ这四层的架构,我们来看看和其他求相比,我喜欢买CQ的这一点,也就是我现在这句话,它不同的场景中应用并发挥良好的作用。注意数据库是不是还是这个数据库,但是我的搜Q优化引擎一换,哥们就跟同样一部车性能是不是就不一样了?看好这句话,插件式的存储引擎将查询处理和其他系统任务以及数据存储提取相分离,我觉得当时我看完官网上这个以后,我觉得就这一句话,我就觉得是他这种设计思路完全就是软件架构的一对,非常爽。
18:15
嗯,我们好好体会一下插件式的存储引擎架构,跟我讲我们这些存储引擎可不可以换,可不可以拔插,然后分层了以后实现存储和查询,提存储是进去提取,是不是读啊相分离,那么呢,我们可以根据业务的需求和实际需要选择合适的存储引擎,而这一点总的宏观范围的概念先告诉大家,一,后面我们讲调优的时候,你的脑子里面反映出来,我这层哪一层,哪一层出事我得找谁,硬盘出事了,你能不能去找这个层啊,你是不是得找他呀?好第二个我们优化了以后,优化哪个呢?所以说从上到下我们四层结构分别是一连接层,请同学们简单的读一下啊,第二层是不是我们的服务层呢?好,那么呢,来看一下他干了一些什么事,这。
19:15
第三层什么层,继续第四层,最终实打实的落到咱这数据是不是还得在硬件的硬盘上面啊,所以说第四层是什么层?数据存储层,主要是将存储在裸设备的文件系统之上,并完成与存储引擎的什么呀交互,那么也就是说现在请同学们呢,在纸上只写蓝色的名字,从上到下记一遍即可。
我来说两句