00:00
好,同学们,咱们接着往下讲,接下来的话呢,我们看下这个第二章叫做MYSQL的数据目录啊,打开那这一张的话呢,咱们主要谈一谈什么问题呢?就是咱们在Linux下呢,安装了MYSQL对吧?那么它在Linux这个架构下对应的数据文件,包括我们这个,呃,软件本身包括相关的一些指令啊,它都存放在哪些路径下,这呢就是我们这一章呢,主要给大家解决的问题。那这一章的意义的话呢,更多的还是一个了解性的,但是呢,它对于我们熟悉后续咱们讲索引对吧,还是有帮助的,所以这一章的话呢,讲解上来讲还是比较啊有必要的啊,大家呢,也需要关注一下这里边的细节,只不过呢,就是下来以后呢,大家没有必要呢,自己去操作一遍啊,这就是我们这一章的一个定位。行,那首先的话呢,我们先做一个简单的回顾,就是咱们在Windows平台上,上篇咱们讲过了,对吧,装这个MYSQL的话呢,我们主要呢,是不是对应的两个文件目录啊,一个呢,是在这个C盘下有一个叫program data,然后下边我们找到这个MY。
01:02
在这个下边的话呢,诶,我们以8.0为例啊,再打开这个目录下呢,有两个比较重要的结构啊,一个呢叫做data,那这个data呢,打开以后呢,实际上呢,大家看到的一个一个的文件夹,那就对应的是我们一个一个呢,是不是创建的一个数据库啊。那具体呢,比如说打开之后呢,这里边儿是不是是不是每一个就是一个呃表对吧,这个表的话呢,它是以这个叫ID这样的格式呢来存储的啊有这个表空间的结构,还有我们相关的一些数据啊,都存储在这里边了,那咱们在讲解这个Linux平台下,关于这个表结构的时候呢,也会有跟它对应的这个名称啊,到时候大家呢,也关注一下。好,这呢是我们说的这个叫data对吧,然后还有一个比较重要的结构呢,叫做media.ii这个呢,在咱们这个Windows下呢,叫点ni了,实际上呢,就是我们所说的MYSQL数据库服务器的一个置文件了,对吧?哎,我们可以配置它相关的一些信息,OK,这个呢是咱们说的这个C盘下的一个比较重要的目录。
02:02
还有一个地盘。这个D盘下的话呢,主要存放的就是我们这个数据库服务器运行起来之后呢,我们说它是一个进程了,那么这个进程在运行之前呢,实际上呢,是不是就是数据库文件,我们叫程序也行,对吧,打开以后这就是我们整个这个程序对应的物理上的文件。然后在这个目录下呢,也算是有一个比较重要的结构,是不是就我们这个B目录啊,这个B目录的话呢,下边存放了很多是不是可执行性的一些文件或者叫指令,对吧?那我们呢,还把这个路径呢,是不是配到这个pass环境变量下来方便呢,我们去调这样的一些指令,OK,这呢就是咱们说对应的这个Windows平台下的这样一个说明,然后呢,咱们回到这个诶LIS这平台下,我们看看诶都有哪几个路径的是对应的一个关系,首先的话呢,我们回到咱们的这个叉10L这里边咱就主要以8.0啊先来进行一个说明。好,我打开这个150,嗯,然后这块的话呢,我们先双击一下。啊,我再获取一个关于1.1150啊这样的一个啊IP啊地址的一个连接啊,然后的话呢,我们这里边呢,去做一个find的操作啊,这呢是我们说这个Linux下的这个指令对吧?诶我们查询一下这个名称呢,叫做MYSQL的这样的一些文件呢,或者文件目录呢,都有哪些。
03:16
好,这呢就给我们罗列出来了啊,大家呢,查看到的可能跟我这个呢个数不太一样啊,我这里边有可能比你的多啊,是由于我后续的一些这个操作造成的啊,当然我们共有的部分呢,应该有这样的几个啊,首先第一个呢,就是叫war啊,Lib叫MYSQL,哎,这个文件目录,我们看它存放的是什么结构呢,我们就可以通过CD啊,叫y lib。啊,My circle啊,我们就进来了,对吧,那进来以后的话呢,我可以通过这个LL啊这样的一个指令呢,我们做一个查看。好的,那么查看的话呢,这时候你会发现呢,我这里边是不是对应的有一些这个文件了,是吧?这个文件呢,你再细一打眼看呢,你发现好像有点眼熟,像这个DB1像这个像这个啊performance STEM实际上呢,是不是就对应着我们创建的一些数据啊。
04:08
对吧,就是我们创建数据库,那么这呢,就相当于是我们数据库文件它的一个存放的路径。啊,就是在我们这样的一个路径下。诶,就是在这儿啊,就在这儿,它对应的呢,其实就好比是我们刚才讲到的哪儿啊,是不是我们这个C盘下的这个data这个路径啊,就类似于是它。啊OK啊行,你要再进去的话呢,实际上就能看到里边这个表了,这个表呢,我们一会儿再说,那暂时呢,先宏观上呢,我们做一个讲解。好,呃,这是一个事儿,然后另外一个的话呢,诶,我们这里边就提到了,刚才呢,这边我们看到这个文件的话呢,我们称为呢叫数据目录了,就是咱们数据库文件呢,它存放一个路径在这个MYSQ当中啊,它其实有一个专门关于数据目录的一个定义,就是呢,数据库服务器在启动的时候呢,会到文件系统的某个目录下呢,加载一些文件啊,实际上就是读我们这个数据库文件呗,对吧,然后你在运营过程当中产生这些数据,比如说你增删改查。
05:03
当然主要是增删改了对吧,包括呢,你DDL的这些操作,哎,会把相关的一些数据呢,再存储到这个目录下,那对应的这个目录呢,我们就称为呢叫数据目录。啊叫做数据目录,这个数据目录的话呢,其实还对应着有一个变量啊,叫做data di2我们可以呢去做一个查看的啊,这也是没有问题的啊啊你比如说我们这块呢,做一个登录啊,其实我这块之前写了一次啊,诶咱们再看一下也行啊,这个我们可以受wheres呢like叫data DR。我们就能够查看这个叫数据目录,它的一个路径呢,恰好是不是就是我们这里边说的这个VAR下的MYQ啊。诶,那说明他们二者呢,是不是有个相互映衬的一个关系,咱们刚才说了它是一个数据目录了,而且呢,确实这个变量呢,指的路径呢,还就是它啊,进而呢,再一次证明啊,这就是我们所说的数据库的文件存放路径,好这就过了,然后第二个啊。呃,相关命令的一个目录啊,这块呢,实际上对应的就好比是我们地盘下的这个闭幕下存放的这样的一些指令,对吧,那这个路径是在哪呢?在这块呢,有写,实际上是两个,那回到我们这个命令这块呢,往上找,那对应的就是我们主要说的就是这个路径。
06:11
来我们这块呢,也做个查看啊CD啊USR。啊,然后我们这个叫B是吧,然后呢,是不是叫哎B下的,直接我们查看其实就可以了是吧。然后这块呢,你要用这个LL去看的话呢,它这个有点长哈,特别多,那我们就这样LS这样查看一下吧。啊,就不看这个细节了,好,那这块呢,我们LS查看的话呢,在我们刚才说的USRB目录下,你看就存放了很多的这个指令,那其中呢,有一波你看都是跟我们这个Mexico相关的,是不是一直到这块那都是相关的,对吧,MYMY的mean啊,Blo checkmp import pump show啊等等这个呢,就是我们所谓的这些指令。啊,就是在这个路径下,好,还有一个路径啊,CDS2呢叫是吧,然后LS一下,在这里边的话呢,我们去找也能够找到MYSQL的身影。
07:02
MY开头的。眼神儿不大好。啊,在这儿呢是吧,诶这块呢也能找到,诶这个呢,都是跟咱们说的这个指令相关的这个路径啊,就是这两个。哎,大家有个印象啊,是这两个好,然后的话呢,我们再接着看到就是相关配置文件的这个路径了,配置文件路径的话呢,也是有两个,一个呢是我们说比较重要的叫做卖点CF它的一个路径,还有呢,另外呢,就是这个路径啊,它也是一个,那我们也简单的搂一眼。好,回过来啊,在这。嗯,这个我们做一个CD,然后呢,USSR,然后我们这个叫share是吧,它呢叫MY呢,8.0,哎是这么着的,嗯,这块我们做一个LS啊LL啊做一个查看,这里边呢,我们说存放的就是咱们所谓的也是一些配置文件啊,你看具体个文件的大小啊,这块你看都有罗列是吧。啊,OK,这是一个,然后还有一个啊,这是我们所谓的非常重要的啊,ETC下的叫MY,这个咱们先ETC吧,哎,这个下边,然后LS一下吧,在这里边的话呢,看文件非常的多,有一个呢叫麦点。
08:11
诶在这儿呢,是不是CF啊,哎,就是咱们所谓的这个配置文件,相当于我们Windows环境下的这个C盘下的是不是这个文件了。啊,这叫me.ni这个呢,我们叫买点CNF啊,这个咱们之前的时候是不是也操作过呀,我通过这个VM的方式呢,ETC买点CF。这样呢,我们是不是就打开这个文件了,在这里边你可以做相关的一些配置,对吧,那配置完以后呢,你可以做个保存啊,这呢我们就直接退出了就好,那这样的话呢,就我们把这几个文件的这个,呃,整体的结构呢,就相当于给大家做了一个简单的介绍啊,然后下边的话呢,咱们重点来说一下这个数据库的事儿。好,那么接下来的话呢,咱们这个重心啊,就放在我们数据库文件它的一个存放路径啊,来进行讲解,好,那我们来看这个第二节。
09:00
首先的话呢,在这个开头部分呢,咱们提到一个概念啊,叫做文件系统啊,这个词呢,大家要做一个了解,什么叫文件系统呢,就是说我们像inno DB和my Sam,这就我们下一章和下要讲解这个存储引擎,这个存储引擎呢,就专门用来存储我们这个数据的哈,那就是我们核心来讲就这个表数据了,那把这个数据呢,我们说要存储在这个磁盘上,那具体来讲呢,咱们说用来呃管理这个磁盘中的这个结构啊,咱们就称为呢叫文件系统了。那自然而然的呢,就是我们这样的存储引擎,是不是就负责把我们的这个表数据呢,就存储在我们这个文件系统上,对吧?啊有这样一个概念,好,那下边的话呢,首先我们做一个查看,就是当前呢,咱们MYSQL数据库服务器上呢,咱们到底保存了几个数据库,或者说呢,在我们安装完的时候呢,呃,默认的有几个数据库啊,这个大家应该都非常了解了,对吧,咱们前面呢,也没少操作,咱们可以呢,通过叫show,叫data basis。你通过这样的指令呢,是不是就查看我们当前的一个数据库了,这个呢是我们自定义的,剩下这四个呢,是不是都是系统默认提供的呀?好,那这几个数据库分别的作用是什么呢?那那我们这块呢,做一个了解,这个my circleql这个数据库一看到这名字起的就非常的核心是吧?那这个数据库现在就存储了MYSQ的,呃,用户的账户和权限的一些信息啊,这个呢大家应该有所了解,咱们在安装好这个MYSQL的时候呢,咱们当初呢,是不是还又思过一下这个MY,哎,咱们还当时呢,是不是查询了一下谁呀,一个呢,是不是叫host,还有这个user from一下我们这个MYS这个数据库下的一个表,是不是就叫做user啊?
10:39
那我们就看到了他的用户的一些信息,对吧,这个表里边儿这个字段呢,是非常多的。哎,应该是非常多的啊,这个这样格式呢,可能不太友好啊,我们通过这个杠G的方式来查看,那字段呢,非常的多啊,我们这呢就哎不一个个去说了啊,我们到后边的时候呢,咱们再挑着呢,给大家去做一个讲解,行这呢就是咱们这个MY的这个数据库,那除了它之外呢,下一个呢,像这个information STEM这呢也是一个数据库,它呢保存着MYSQL服务器维护的所有其他数据库的一些信息,比如说有哪些表,哪些视图触发器啊等等等等这样的一些结构。
11:18
啊,这块呢,大家应该有点印象吧。什么意思啊,咱们在讲这个基础片的时候呢,当初咱们提到的,比如说这个存储过程和存储函数,咱们呢,是不是查看这个存储过程和存储函数的时候,咱们就使用过,是不是这个information STEM啊,它相关的里边这个表。啊,它不就保存了,或者叫记录了我们的存储过程和函数嘛,对吧,包括呢,我们讲这个触发器的时候呢,也是一样的,我们如何呢去查看触发器呢?诶当初咱们是不是也用到了这个information STEM下载的triggers啊表里边都做了这个记录,对吧?这呢,就我们说的这个数据库,它的一个作用。哎,它的一个作用啊,了解一下。然后呢,下边还提到一个叫performance STEM,它呢主要是保存MYSQL服务器运行过程当中的一些状态的信息,用来监控MYSQ服务的各种性能指标啊这块呢,就保存在我们这两个数据库下,而这个这个数据库呢,诶是通过视图的方式呢,把STEM和STEM呢结合起来,供我们管理这个系统管理员还有呢,开发人员呢,去监控MYL性能的这样的一个数据。
12:26
啊,这块大家做一个了解就可以了。好,那下边的话呢,我们看第二个点啊,这块呢,是咱们更关心的啊,更关心的说数据库在文件系统中的表示,诶这块我们就深入到它对应的这个文件结构这块了。这块讲解的话呢,嗯,这个大家可能容易迷糊啊,我先宏观上呢做一个说明啊,做个什么说明呢?嗯,咱们呢,呃有两个使用频率比较高的叫存储引擎,一个呢叫做in DB啊大家多少有所了解,一个呢叫做MY啊I Sam是吧?啊叫MY也可以啊好,这呢是我们说典型的两个存储引擎,咱们呢先讲这个,然后再讲这个,首先这俩呢是不是有个区分。
13:09
然后这两个区分上的话呢,我们还得再分个支啊,是不是一个涉及到叫8.0,一个呢,涉及到是不是叫5.7啊,啊这块又有个分支,所以大家别懵了,然后具体这个分支上的话呢,我们又涉及到好几个文件,那这块呢又变了啊,这块又变了啊,就看着看着可能就懵了先宏观上呢,知道我这样讲几个顺序,我怎么讲呢?我先来讲DB,这为是我们5.5之后呢认的一个存储,所以它的优先级比较高是吧,我们先看这个DB在5.7场景下的一个情况,然后呢,咱们再看一下8.0哪些做修改了。接着呢,咱们再回到MY这个存储引擎下,实际上呢,它这里边呢,关于8.0跟5.7啊,多少也有一点点区别,但这个区别很小啊,咱们就统一的都画成一个三吧,这呢是我讲解的一个顺序,心里有数了吧,好,那下边我们开始说,在in DB这个存储引擎下呢,我们先看5.7的版本。啊,那就是这个160了啊,这个我们留着这个它啊,我们再双击一下。
14:04
啊,再生成一个这个结构,好,那首先的话呢,我们先进到咱们这个数据库的,呃,数据库的存放的一个路径,还记得这个路径是什么了吗。啊,CD一下啊,是不是叫Y,然后lib啊啊,然后下边是不是有个MYSQL啊啊LL吧,哎,这样我们做查看,那这个下边的话呢,你看这两个是不是说就是咱们自己创建的数据库对吧?诶这个呢,是不是都是系统提供好的。好了,那这块呢,我们首先呢,看到了几个数据库,每一个数据库呢,对应的都是一个文件,那我们可以先比如说进到这个DB test1这个数据库下啊,我们就可以通过CD啊,第二斜杠叫DB test1好回车。我是不是就进入他这个路径了,进来以后呢,我们也LL一下。好,大家看这个时候的话呢,我们就能够看到在当前这个数据库下呢,它的几个文件啊,那这个文件呢,我们再回到这儿,咱们先做一个查看啊,比如我去use一下叫DB test1,然后呢,我们去一下叫tables。
15:03
诶回车好当家,你会发现呢,我们这个数据库下呢,是不是就存放了两张表啊,一个呢叫EMP1,一个呢叫EP2,好回过来,那么EMP1P2呢,我们就比较熟悉了,是不是就对应的一个是它,一个是它对吧?那具体是干什么用的,我们先不知道啊,先知道有这两个结构,然后的话呢,我们会发现呢,是不是还有一个结构叫做Db.oPT是不是这个结构啊。这是一个文件啊,那么这个文件存的是什么呢?那我们给大家说一下它呢,显然是不是跟具体的这个表呢,似乎关系就不大了。你看名字上也能看出来对吧?啊DB呢,就是data的这个存放的啥呢?它存放的就是针对的咱们是不是这个DB t1这个数据库啊,这个数据库下的一些这个信息什么信息啊,比如说我们这个数据库,你使用的字符集呀,你使用的比较规则是什么呀,那就在这个文件当中进行了一个存储。叫Db.oPT啊,有印象了吧,那就它。啊,我说清楚了是吧,好,那这个说完了,然后的话呢,我们再看到这有两张表,这个表的话呢,诶好像每一张表是不是对应的有两个文件呀,一个呢叫F2M,一个呢叫ID。
16:16
啊叫ID好,那这块我们来解释一下,这两个文件是干什么用的啊,那么第一个呢,叫EP一点F2M,它呢是用来注意是存储这个表结构的。诶,它是用来存储我们说的这个表结构的,诶什么意思啊,你比如我们create一个这个EPE,是不是咱们创建一个表,表里边有字段,字段名叫什么,字段的类型是什么,约束有什么啊,这里是不是都是一些信息啊,那么这些信息呢,我们就称为它叫表结构,那就存储在这。好,这是存储表结构的,那表结构存完之后呢,那我问大家,我们针对一个表来讲还差什么呀。诶,大家是不是发现了表结构有了以后呢,我们查看表里边儿数据,实际上一条数据也没有,那我们接下来我们是不是可以往表里边添加很多数据啊,那这个数据呢?诶我们放在哪儿呢?首先明确一点,它不是放在点F2M当中的。
17:08
那大家会想哦,那是不是就放在我们这个ID这个呃文件里边呢,诶这块呢,我们说一下,在咱们现在呢,是5.7这个版本对吧,5.7下呢,默认是放在我们ep1.ibd这个文件下的。默认是在这儿的啊,那也可以不放在这儿。啊,那个同学说,诶,老师你要不放在这儿,那我们放在哪呢?啊,那就意味着注意听关于我们这个表中的数据啊,可以放在这,也可以放在放在这。放在这儿是吧,我给你这样圈一下。在咱们这个数据库叫DB test1,它的上层或者叫它所在的目录下呢,有一个叫IB啊塔一这样的一个文件。是吧,这个文件,这个文件里边呢,首先你会看到它是独立于我们具体的数据库的。啊,那么在我们这个,呃,5.5啊,具体这个版本是哪个了,咱们这个课件里边有啊,我先说啊,在在我们之前这个版本当中啊,呃,5.5啊到5.6某一个版本当中,咱们各个数据库下边具体的这些表当中的表数据都存放在我们这个叫IB得塔一当中啊,都存放在这。
18:21
这个文件呢,哎,我们也给大家起个名,它叫系统表空间。那叫做系统的表空间。嗯,这个咱们到后边的时候呢,会给大家去讲这个表空间啊,多少区域数据页啊,这样的概念,你先知道呢,就是表空间里边存放我们这个表数据的,OK,呃,那这个系统表空间呢,它默认的大小呢,就是12兆。啊,他这个默认大小呢,就是这个12兆啊,那有同学可能会想说,老师你这个,呃,表中的数据呢,可能很多上千万条数据啊,表也很多,那这个12兆肯定存不下呀,诶你说的确实没有问题啊,默认的话呢,是12兆,你要是这个表数据呢,越来越多,越来越多,那这个文件呢,就不断的往上找。
19:03
啊,它就会突破我们这个12兆啊,就是这么个道理,行,呃,那么我们在后续的这个版本当中,那比如说在5.7当中啊,咱们又提供了一种路径啊,就是存放在叫ibd这个文件当中,那就相当于我们不用把这个表数据是不是都统一的放到一个这个系统表空间了,是吧,那我们这个呃,Ibd呢,咱们可以称为呢,叫做独立表空间。哎,叫做这个A独立表空间。诶,那就相当于我们存储这个表数据的话呢,有两个啊两种方式啊,一个呢是放在系统表空间里,一个呢是放在我们这个独立表空间当中,那么现在咱们这个版本啊,我我说的所谓的现在呢,实际上还是5.7这个版本当中。给咱往下找。嗯,我们往下找。那这里提到这个系统表空间了是吧,就我们这个I比一啊,默认的是12兆然你要不够呢,自扩展是吧。
20:01
那么又提到我们这个呃,独立表空间啊,刚才也说了啊,那么在这个5.5.7~5.6.6当中的时候呢,咱们默认的这个表中的数据呢,都放在这个系统表空间当中,那么在五点呃6.6之后的话呢,咱们就可以放在这个叫ID这样的一个表空间里了,咱们称叫做独立表空间。对吧,叫独立表空间,那我们呢,还可以呢,去指定啊,指定指定我们看看这个在哪。啊,这个在下边啊,就是我们指定呢,说默认呢,那比如我们现在是在5.7这个版本当中了,那这个时候呢,我们想放在系统表空间怎么办呢?啊,这个时候你可以在我们的啊卖1.cf这个文件当中,咱们做这样一个指令啊,指令你要是写零,那就表示呢,你是想把这个表数据呢放在系统表空间里,你要写一呢,表示呢想放在独立表空间中,对吧?那么在5.7啊或者说就我们准确的讲是这个版本之后啊,我们要是通过这样一个指令去查看的时候呢,你会发现它这个结果呢是一个啊诶咱们这块呢查一下。
21:02
有点绕是吧。哎,你发现的这个是on,这个on呢针对的叫port啊,其实就是我们所谓的叫独立表空间,它既然是on了,那就意味着呢,我们这个在5.7,咱这是五点七点多少版本啊,那肯定是5.6.6之后了,对吧,那我们要是添加数据的话呢,都会存储在我们这个叫ibd这个文件里了,就不再使用这个IB data1啊这样个文件了。啊,这个大家呢,做一个了解。啊,做个了解就可以了,行这呢算是咱们给大家呢,讲解的第一个这个结构啊,在5.7当中是一个什么样的场景啊,我那就说清楚了啊,一个是他,一个是这哥们俩,还有呢是一个这哥们啊,到底是一个什么样的情况。行,5.7呢,我就说到这儿啦,然后接下来呢,咱们来说一下这个8.0。啊,注意切换到8.0了,8.0的话呢,首先啊,我去CD一下啊y lib circle进来LL一下,好,首先的话呢,我们大家一看在这里边是不是也有我们这叫IB塔一这样的一个叫系统表空间呀,啊没有问题的,好,这是它我们就先不管了,然后的话呢,我们去CD一下啊冒呃点斜杠叫DB t1啊我们进到这个数据库下啊L2一下。
22:15
啊,这里边你看有俩是吧,啊,那我们回到这边,咱们首先呢去use一下,叫DB test1。对吧,嗯,DB test1,然后我去收一下叫tables是吧。查看一下,咱们在这个DB test1这个数据库下呢,我就有俩表。那是不是就俩表好回过来,刚才呢,大家这个印象还有没有?很同学说老师你刚才讲的什么我都给忘了啊,完全是放在内存当中,突然呢给清空了是吧?啊别这样啊,哎,稍微呢,我觉得你还得有点印象,你看咱们在这个DB test1这个下边的话呢,首先你没有看到注意没有看到是不是这个结构。叫Db.oPT吧,没有看到它相当于这哥们就没有了,那个同学说,所以老师那难道说我们这个8.0当中就不需要记录我们数据库的这个字符集和比较规则了吗?当然需要了,只不过呢,他就没有放在这里边了,那放在哪儿啊?那就放在你具体的表里边儿了呗。
23:15
是吧,诶可以考虑放在这儿啊,这是一个,然后的话呢,大家再看我们这里边两个表,诶那结果呢,就只有两个文件,诶怎么没有我们这个FRM这个结构了呢。发现了吧,你看FRM这个结构没有了。啊,这个大家呢在呃面试的时候,其实不过一般呢,咱们不需要整到这么细致了啊呃,但是呢,你要是跟面试官去砍一砍这个底层结构的话呢,呃,那8.0是什么样,5.7什么样子,包括呢,这里边呢,到底什么结构,存什么东西啊,对于我们后边呢,呃讲索引有什么样的帮助啊,就是或者说呢,你通过索引呢,去翻底层的这个结构呢,都看了看,哎,就是可见你的这个知识还是很厚重的,是这个面试官的话呢,可能也得给你竖起一个大拇指啊,要看的话呢,也就看到这程度是吧。OK啊,那我们在这个8.0当中啊,你会发现呢,F2M这个结构没有了,那我们怎么解释呢?啊,这个解释的原因就在于是我们ibd呢,诶它呢作为这个独立表空间啊,我们说是存储表数据的,但8.0当中我们把这个表结构跟这个表数据呢就合一了啊,然后合一以后呢,就是放到叫ibd这样的一个文件当中了。
24:21
啊,就这文件当中是吧,然后大家你可以再回顾一下,咱们在Windows下,你看Windows下呢,咱们说这个data,我就随便挑个数据库,你发现呢,是不是它也叫ibd,而且呢,是不是也只有一个呀,一个文件对应着一个表,那我们啊可能感兴趣的就看一下5.7是什么样子的,打开这个data啊,打开我们这样的一个呃数据库啊里边呢,诶这个就别打开它了。呃,打开这个吧,然后这里边的话呢,你看针对我们这个,比如说叫哎countries,它是不是还是有俩点FRM点这个ibd啊,然后5.7里边你看是不是也有它呀,哎,所以呢,Windows跟咱们Linux呢,是不是应该说是一样的。
25:01
应该是看懂了,OK,行,那有同学呢,可能会说说老师你说的是这样,那真的是这样子吗?你怎么去证明啊,或者大家呢,去跟面试官呢,在这块呃,吹的时候啊,这个不是不是这个真的吹了,咱们加个引号是吧?啊再给大家呢,去讲的时候,你说呢,就都合并到这个ID里边了,如果面试官问一句说你怎么证明啊。哎,那这时候咱们是不是得亮出我们的真正的实力了呀,哎,怎么去证明这个问题呢,来我这块呢,有一个操作。说呢,我们可以呢去解析这个叫ibd这个文件啊,解析的话呢,我们可以使用这样的一个叫ibd to s Di这样的一个文,这样的一个工具啊,这个工具呢是Oracle提供的,因为MYS呢已经被Oracle收购了,所以自然呢这个工具也就有了啊,而且呢,自动的集成到了我们这个MYSLE8当中,所以大家呢,直接呢把我这里边这个指令的CTRLC一下拿过来啊,然后呢直接粘过来。嗯,注意呢,你就是在我们当前的这样的一个数据库下的啊,粘过来以后呢,我改一改这里边儿的这个相应的信息,比如说呢,咱们针对的是这个啊在这块啊。
26:04
针对的是我们这个EPE这样的一个ID文件,那自然而然的我们这个T,这个T文件的话呢,我也叫EPE吧,好,我们做个会车。然后呢,再去LL一下,你会发现呢,在我们当前这个数据库下呢,就帮我们生成了一个叫it的一个文件,哎,我们就打开这个文件呢,去查看一下哈,这个ep1.t这个文件。好,大家呢,对这个EPE呢,应该多少有点印象,就是当时咱们创建的时候呢,主要里边呢,是不是就包含了这个ID这个字段啊,你看我一说ID的话呢,这块我都找到了,我们这个表名呢叫延P对吧?诶相对于那个版本呢,创建时间呀,你看都有,然后这个字段呢叫ID,它的类型呢是四啊四呢肯定是指定的具体的具体一个类型了,包括呢,你是不是空啊哎,是不是有这个zero费的修饰啊,还有这个按散的修饰啊等等等等等啊下边呢,还有关于我们的另外的一个字段,你看这块呢,描述信息都有l name是吧,还有它的类型对应的这个数值呢是16,诶你会发现呢,我们这个ID这个文件里边,是不是确实把我们这个表结构的信息也给存储起来了呀。
27:06
啊,这个呢,是咱们实打实的,是不是自己看到的呀。哎,那就我们证明的这样一个结论。啊,这么这样一个结论,那些同学可能会想说,老师为什么他有这样一个改变呢?啊,应该也是出于这样方便管理的一个考虑啊,原来的话呢,我们还有这个,还有这个,还有这个三个东西,对吧,那现在的话,包括呢,我们以前还把这个表数据呢,还可能会放在这儿啊现在的话呢,我们就非常明确的话呢,只要是你这个表相关的啊,我们就都放在一个里边了。啊,你关于这个数据库相关的,我们也可以呢,就是穿插在放在就是数据库的这个情况呢,实际上也是以表最终来呈现的是吧,所以呢,只要跟表相关的,我们就都放在这个ibd这个文件里边。OK了是吧,那这样的话呢,我就把DB5.7和8.0就说完了。啊,我这块我得吸两口氧气啊,有点缺氧行,那这个说完之后的话呢,咱们接着呢,往下看,咱们是不是就可以去看一下这个MYI这个存储引擎的一个方式了呀。
28:07
好来看它,那要看这个的话呢,咱们需要呢,得创建一个表吧。来创建个表,这个表呢,我们使用的这个存储引擎呢,就是这个MYS,那方便呢,咱们去理解它这个底层的这个结构,对吧?好了,那这块我们创建的话呢,咱们把这个选中CTRLC一下。嗯,然后回过来,嗯,咱们还是先在这个,嗯,5.7这里边来说吧,我把它呢粘过来,然后回车。行这块呢,咱们相当于是不是就创建成功了,我们说一下这个叫tables。哎,这里边儿呢,是不是就有我们这样的一个表。对吧,那用我们这个表了,那么咱们在这个8.0当中,咱们也给大家创建一下。来粘贴一下。也可以了,Show tables。啊,也没有问题,行,那咱们这块呢,还是先来看一下这个5.7里边行这块我们使用的,呃,应该是这个DB test1吧。
29:04
来,我们这时候呢,L一下。好大家看,那么在我们这个DB test一下呢,咱们创建了一个数据表,这个表呢叫这个名,然后回过来这块呢,大家会发现呢,是不是对应的有三个结构啊,哎,有点意思啊,跟咱们这个印度DB呢,还真不一样。这三个结构的话呢,一个呢叫做student,这是这个表明S,这没啥可说的,就是我们这个表结构对吧,然后下边的话,你发现有两个,这两个其实合在一起,相当于咱们原来的叫ibd,那这个怎么解释呢?诶这块呢,我们后边讲,所以的时候呢,咱们就能够耦合在一起了。啊,咱们今天讲完之后,后边我讲缩引的时候呢,还会再说一下,它就是咱们这个音no DB当中啊,长话短说啊,这个音DB当中啊,我们使用的索引啊,索引及数据,数据与索引这句话到时候我们会去强调,就相当于我们这个底通用的索引,跟我们这个表结构啊,数据呢是合在一起的啊,就是相当于我们之前的这样的一个结构。
30:04
而我们在这个呃,MY当中啊,它这个数据和索引呢,是分开存储的。啊,分开存储的这个MY呢,你可以理解成就是MY是吧,这个D呢叫做相当于就这里边存的是咱们这个表数据,而这个I呢,指的就index,就是我们所谓的叫索引。啊,所以说呢,就是数据和索引呢,是分开来存储的。而我们在DB当中,呃,我们准确的讲呢,叫聚集索引啊,这个或者叫聚合索引啊,呃,这个聚集索引的话呢,呃,它是索引及数据数集索引的,所以它只是合并在一起的。啊,现在我这样说大家可能有点懵啊,到时候呢,我们再一解释,大家就彻底的就清楚了,先知道这么个事好,那这里边呢,是不是就提到了F2MMDMYD和myi是吧,这样的一个结构。啊,说清楚了,然后呢,我们再回到这个8.0当中啊,我们LL一下。好,大家看这个时候的话,你会发现呢,也是三个文件,除了YD和这个说完之后呢,诶你发现呢,这个叫s Di是吧?啊这个s Di呢,在8.0中叫它,它就相当于我们5.7里边这个F2M啊,知道这个事儿就可以了啊,也是存亡这个所谓的原数据的啊。
31:16
行,那么基本上至此啊,咱们这个事儿呢,就说完了。啊,大家可能是有点儿懵啊,这个文档呢,上面都有介绍啊,大家呢,下来可以再复习一下,我呢再简单做一个小结。我们有个数据库A,有个表B啊,创建在我们这个数据库A里边,如果呢,我们是采用度DB的啊采用度DB的,那我们这时候呢,首先呃,会有这个具体的这个,这我们先是以这个5.7相当于来说明的,对吧。呃,或者咱们就先默认是5.7吧,啊,这里边儿呢,是来存放我们这个表B的这个结构的,然后呢,如果采用这个系统表空间来存放数据的话呢,我们这个表数据呢,就放在这儿了,你要采用这个独立表空间呢,我们就会在这个A目录下呢,有一个叫b.ID文件。
32:01
哎,而且咱们现在主张的是不是都是用这种方式啊。诶这个咱们那会儿也看了,是五点五点几到5.6.6是不是默认的是在这是吧,然后之后的话呢,是不是默认的都是用这种方式,诶他俩呢还可以,这个你可以默认的用这种,就5.7以后呢,你也可以改成默认用这个啊,但是一般就别改了。呃,下边呢,我们要说的就是在5.7当中啊,对应的这个A目录下呢,它会有一个这个。那叫Db.oPT是吧?啊Db.oPT它呢是用来存放我们这个数据库相关的信息的啊,8.0当中就不再提供了。啊,另外的话呢,就是我们这个8.0当中,这个F2M也没有了啊,都合并在这个I比例下边。OK,这就说清楚了,我们这个印度DB,那如果是MY的话呢,呃,5.7里边。呃,5.7里边儿呢,就这里边呢,呃,这两个是吧,都是有的啊,5.7跟8.0的主要区别呢,就是5.7叫F2M 8.0的叫s Di。才这么个区别。嗯,这有仨是吧,咱们上面呢有两个啊,一个是这个啊,一个这个是吧,那8.0呢,当然就一个了。
33:05
行,嗯,了解一下就行了,然后呢,在下边儿呢,提到这个视图啊,这个我就说一下就行,嗯,视图的话呢,咱们也可以大家你去在这块创建一个。啊,在这你去创建一个视图,你看一下这个视图的情况,你会发现呢,咱们视图的话呢,咱们前面上篇讲过,它是一个虚拟的表。啊,他呢,是不是不存数据啊,那言外之意呢,就是如果你要创建这个视图,你会发现呢,在你当前这个啊,比如这这个数据库啊,在整个这个结构里边,你就会看到呢,它有这个具体视图的一个FM,但是呢,它就没有对应的具体的叫ibd了啊,因为它本身也不存数据嘛。哎,这个呢,也进而呢,印证了它只是存储这个结构,没有数据。那除了我们说的这个之外的话呢,还有其他的,比如关于服务器进程的文件啊,服务器的日志文件,这个呢,是咱们后续的这个内容当中还是比较重要的啊,锐度安度啊,还有这个错误日志啊,这个blog日志啊,我们后续都会给大家去讲解啊,还有其他一些文件啊,这个就啊,就一一嘴带过就行啊,这个呢,我们后续呢还会重点来说。
34:08
那么通过这一章的讲解呢,大家重点呢,就需要清楚咱们的数据库这个文件系统里边如何呢?去存咱们相关的这个表啊,表结构,还有表数据,它底层对应的这个文件是什么样的一个情况,哎,大家呢,做到这个心里有数。那你就以我们这个。总结。啊,能够理解,能够清楚,或者你自己拿一张纸,你看自己能不能写出来啊,能写出来那就说明呢,你这个是能够记住的啊,这个呢,跟咱们后边讲引的时候呢,会耦合在一起,到时候呢,我还会稍微的,呃,再提一下我们今天这样的一个场景的。好,那么关于我们这一章呢,咱们就讲到这儿。
我来说两句