00:00
好,那关于这个DB引擎和MY的引擎啊,咱们就告一段落,然后呢,后续呢,我们说这还有一波引擎,那我们呢,就按照顺序呢,依次来进行一个介绍,其中里边呢,有几个啊,比如说我们这个arch csv,还有这个memory呢,这几个我们还需要稍微的关注一下,有时候呢,在这个面试当中啊也会问到。行,那么我们就按照这个顺序呢来进行说明,首先呢来看第一个叫做引擎。这个的话呢,翻译成中文呢,就叫做归档的意思,那这个呢,也直接暴露了这个引擎的一个主要作用,就是用于数据的一个存档。啊,数据的一个存档啊,归档对吧,那么大家你你像咱们国家呢,比如叫呃,国家数据档案中心啊,就是把国家发生的各种各样的大事呢,是不是都得记录下来,然后给它归档存储对吧?那那这时候呢,相当于一定得具备一个插入的功能,你得把这个数据呢,是不是能够插入到表里边啊,那另外的话呢,那你存进去以后,目的呢,是不是时不时的可能会要有个查询的操作,那这呢,我们还得支持这个查询。那么这两个操作当中插入呢,是不是肯定是很频繁的,这个查询操作呢,是不是,呃,相对来说这个频率呢,就要低很多呀。
01:06
啊,就像我们,呃国家那个说故宫吧,是吧,呃故宫呢,说是存储了呃几千万件这个宝贝是吧,但是呢,诶平常让大家看的机会呢,其实比较少的,就像我们国家这个档案也是一样啊,我们不停的在往里边去放,但是呢,我们查阅的机会呢,其实频率还是算比较低啊,我说这个目的是什么呢?就是这个查询的话呢,它现在的性能呢,其实也不是特别好。呃,但是插入这块呢,是我们不停要做的啊,除了这个插入和查询之外呢,它不支持数据的一个修改,那你成了篡改历史了,对吧,那这个事儿是不能做的啊,只能往里放,然后呢,往外去取啊,就这个意思。那么在5.5之后呢,它还支持这个索引啊,支持索引这块呢,提到了就是这个,嗯,它呢支持这个auto这样的一个列的属性,那auto increment这个列的话呢,我们可以给它去设置唯一索引或者非唯一的索引。啊,这是索引的一个支持,对吧,在其他这个列上,就是非我们这个auto inment这个列上呢,你创建索引呢,它就报错了啊,这是它这样的一个特征。
02:06
然后的话呢,诶,关于我们这个R,因为它是归档数据的,那有可能是数据量呢还比较大,所以呢,它必须具备很好的压缩机制啊,这里边提到了我们这个z lib这样的一个压缩库,对吧?呃,那么这个我们使用这个引擎呢,创建的表,以这个表的名字呢来命名,我们对应的这个底层文件的这个文件名,那后缀呢,叫AZ啊,比如我们这表呢,叫呃,这个TEST1是吧,我们这个文件呢,也叫TEST1啊,就是这个意思。它这个压缩呢,效果还是非常好的啊,通过这个数据,那我们来查看,在同样的数据量的情况下,R这个表呢,比MYS这个表呢,要小大约75%,相当于呢,占它的1/4是吧?啊,还是非常小的,然后比支持事物处理这个度DB呢还要更小啊,这个大约小83%。那可见的话呢,我们用这个RM来进行一个数据的归档存储,是非诚适的啊,节约空间呀,对吧,那此外的话呢,它还支持这个叫航机锁,那我们在这种并发情况下呢,其实这个效率还挺高的是吧?诶我们这个在插入的时候呢,性能会更好一些。
03:11
OK,呃,那主要应用场景刚才也说了,就是日志和数据采集归档,然后适合存储大量的独立的作为历史记录的一个,呃,数据的存储,呃,像这种数据的话呢,我们插入的会频繁一些,查询的话呢,其实还不算是特别频繁啊,所以它这个性能差一点也还好。下半身列出来它的一个主要功能,比如说备份时间点的一个恢复啊,啊这里边就涉及到你这个往里边放,放的时候呢,在一定程程度,一定情况下呢,我们可能需要去调取出来,对吧,然后进行一个恢复,哎,它是支持的,然后数据的压缩,那肯定是支持的,因为数据量比较大嘛,是吧?诶锁的力度呢,是行级的这个锁,然后更新数据字典中的统计信息啊,它也是支持的行。那OK,关于它的特征,什么样情况下呢去使用,我们就说到这儿。第二个呢,叫black code这个引擎,它呢丢弃写操作啊,读操作呢,会返回空的内容啊,这个比较有意思,它呢没有任何这个存储的这个机制,会丢弃呢,所有插入的数据不做任何的一个保存啊,但是服务器呢会记录,呃,这个在我们比如进行数据的这个诶备份的时候啊,它会记录呢不来后的这样一个日志啊,但是你自己去查询的时候呢,是你是查不到任何的数据的啊,就这样一个特点,所以我们主动使用它的这个机会呢,其实是比较小的啊好,然后下边一个呢,提到叫CSV这样的一个引擎。
04:28
这个引擎啊,一说到这儿呢,大家可能有的同学接触过,是不是我们有一种数据格式呢,就叫做点CSV啊,或者叫点CSV格式的这种文件,对吧。它跟我们这个CSV引擎呢,还确实有关系。嗯,说这个CSV这个CSV这个引擎呢,它可以将普通的CSV这个文件呢,作为的表来进行处理啊,那它俩呢,还有这种相互转化的一个关系。可以作为一种数据交换的机制,像我们在这个开发当中啊,常见的这个数据交换的这个格式呢,一般我们现在呢,是不是用这个杰森是一种格式啊,那以前的话呢,还可以用这个插是吧,那这里边相当于提到这个CSV呢,也可以作为一种数据交换的格式。
05:05
啊,OK,行,那相当于我们存储这个,呃,使用这个CSV的时候呢,咱们造个表,这个表呢,引擎用的就是它,然后这个数据的话呢,其实就会诶保存在这个点CSV这个文件当中啊,这个一会我们就能看一看,而这个文件的话呢,咱们可以使用文本编辑啊,使用Excel呢,是可以进行读取的,对吧?OK,下边呢,就是写了一个具体的代码啊来来,咱们这块呢,来给大家也举个例子。比如这块呢,我就在这个8.0中去演示了,5.7中是一样的,它没有什么区别,首先呢,我们去use一下,叫DB test1这样的一个数据库,好,然后在这里边呢,我们去create啊。At一个table,呃,我叫CSV的一个,比如叫DEMO吧,好比如我们这写个ID啊,是个int类型,哎,我逗号一下,呃,接着呢,我们来一个叫name啊,比如叫叉类型的啊,长度为20吧,哎,注意后边呢,我们是不是需要显示的指明它这个NG啊,呃,就是对应的这个引擎是什么啊,引擎呢叫CSV,好,但是你看啊,我现在要执行的时候呢,你看它会不会报错啊,走起。
06:05
那是不是报错了?好这块这报错的话呢,这个错误有点低级了啊,这少一个括号是吧,这个这这这太有点过分了啊好你看这个时候呢,加上括号以后呢,就好了吗?再走起你看又报错了说呢,这个storage engine,那就我们现在使用这个CSV呢,它对我们这个表中呢,它是不支持这个空的这个列的,诶这个就是我们想给大家强调的点,就我们现在往里边添加数据的时候呢,这个每一个字段啊,它必须都得是一个not not的这样的一个特征。啊,每一个都得是如此啊,Not not,诶这样呢,加完以后呢,我们再去执行,那它才可以,这个小细节呢,大家要注意一下,就我们这里边也有数据是吧,然后的话呢,我们呃,目前呢,你要是select,呃,先这么着吧,我们先show一下啊create。啊,这个table,哎,我们叫CSV是吧,DEMO啊执行这时候呢,我们会看到这个表呢,使用的就是CSV的这个引擎,然后呢,你要是select星from我们这个CSV。
07:05
哎,DEMO这里边显然是不是就没有数据啊,然后接下来的话呢,我们也色的into一下我们这个表里边啊。代针对的是我们这ID字段和我们这个name字段,然后Y6,嗯,我们先填入一个,呃,一啊,逗号,然后I的硅谷,比如零一,好,这是一个,然后我们再添加一条吧,二。俺艾特硅谷零二。诶这么着是吧,好回车我们呢,就把这两条数据呢,是不是添加到我们这个表里边了,然后我们再做一个这个select,那两条数据呢,就都在了,对吧?好,那么这呢是我们在SQ这个层面呢,做的一些操作,咱们再回到这个,嗯,底层的这个存储这个结构上啊我们在就是此时呢,咱们现在已经在这个DB test1这样一个数据库下,是吧,文件的这个下边,然后我们LL这时候大家你会发现呢,我们CSVDEMO啊,是不是会生成相关这个格式的这个文件了。好,那么这里边儿的这个CSV,这里边儿就存储咱们的这两条数据的。而这个呃,CSV的这个CSM啊,这个我们可以称为呢,叫原文件。
08:06
哎,这个原文件啊,就它它呢是存储咱们这个表的,比如状态呀,表中的这个记录,记录一下你这个行数啊,哎,这就哎它的这个特点行,那这里边既然是存储数据的,我们就可以考虑呢,比如说呃,用相关的这个文本编译器啊,打开看一看是吧,这里边我们就可以启动一下咱们的这个啊XFTP这样的一个软件。嗯,咱们连接一下这个150。好,呃,这里边呢,首先我们进入这个路径啊,咱们这个数据文,这个数据的一个目录呢,是呃,Lib下的这个MY啊,是不是在这儿啊,然后呢,咱们找的是DBT的一啊,这是不是就我们这个文件,哎,然后把它呢,我们来一个下载到默认的文件夹啊,这个应该就在我的桌面上了,好回来。诶可以了,然后这时候的话呢,大家把这个文件的话呢,我们可以先使用一个,比如说诶not派加加吧,哎打开诶大家你会发现呢,这是不是就我们添加的这个数据啊,啊没有问题的行,嗯,那么你也可以呢,使用咱们这个像Excel这样的这个工具啊,去打开也OK。
09:10
你看这块也能呈现出来,所以说呢,把它作为一种数据交换的格式呢,也是OK的啊,是可以的。行,那就相当于我们数据库当中啊,你使用这个CSV这个引擎呢,你进行数据的一些存储,然后呢,我们就可以呢,以这个CSV这个文件的这种方式呢,进行数据的这种传输啊,是可以的啊。行这块呢,我们就相当于给大家做了一个演示啊,了解一下就OK了,接着我们来看下边这个叫memory。叫memory说呢,我们既然有一个引擎呢,叫做memory啊,这个memory的话,你看不就内存的意思吗?那相当于什么意思啊,就是我们把数据啊,就存储在这个内存里了。啊,还竟然有这样的一个引擎,你看,我再说一遍,把数据存储到内存里了。老师,你说这句话有什么意义啊啊,有什么这个这个想想暗示我们什么吗?还真是想暗示你一下啊,来,我们先说这个事。
10:03
就是说呢,咱们前面呢,讲这个印度DB啊M时候也说过对吧,咱们存储这个表结构的时候呢,提到了一个格式叫FM叫FM,我们这里边呢,如果你使用的是这个memory,这个memory呢,呃,引擎来这个这个处理这个表的话,这个表结构的话呢,仍然是在底层中有一个文件的,这个文件呢,就跟这个表面一样,叫FM,就注意这个呢,是存储在物理磁盘上的啊,而我们这个表中的数据啊,它是在内存中的。嗯,注意这个点,注意这个点,嗯,所以呢,这里边我们想强调点是至于内存中的数据啊,这样的一个表结构。是表,哎,这个这这样一个表是吧,表结构还是在这个物理磁盘上的。好,那么既然你使用的是内存,那你看中的什么呢?那毫无疑问看中的一定是响应速度了,那它的缺点是什么呢?缺点当然是内存中数据呢,它的这个持久性是有问题的,一旦呢,这个相应的进程啊崩溃以后呢,我们数据呢就会丢失,对吧?诶不能够持久化,那另外一点呢,就是它存储这个数据呢,要求这个长度呢,是不变的格式啊,像lo呀,Test呀这种类型的,我们就哎不可用了啊注意一下这个点行,那既然呢,你是在内存级别的这个数据这个存储引擎,所以说呢,它这个查询的速度啊,你看它比我们的MYSM还要快一个数量级。
11:24
而这个MYS呢,在查询方面呢,比这个印度DB呢,是不是要快一些啊,那这里边儿就有个这样的对比关系。好,那么另外一个关于这个memory一个特征,咱们再讲下一章索引的时候呢,会提到咱们重点呢,下一章讲的索引呢,叫做B加数的索引,诶叫B加数的索引,像这个呃,MY和印度DB呢,哎,都是支持这种加数的,而我们这个memory呢,它还支持一个叫哈希索引。哈希索引啊,底层呢,相对应的就是哈希算法了,像比如Java中的那个哈希map呀,哈希set呀,底层在存储数据方面是不是都用到这个哈希算法,对吧?那么哈希的特点呢,就是它比较相等与否的时候呢,速度非常快,但是你要比较个范围呢,这个事儿就不合适了啊,那用这个B加数呢是比较合适的。
12:08
行,那么默认的话呢,它用的还是哈希索引,你要是想用这个倍加数的话呢,你需要创建索引的时候呢,做个指令啊这样。行,这是它的一个主要特征,呃,另外呢,我们在用memory这个引擎去创建表的时候呢,这个表啊,注意它还是有这个大小限制的啊,哎,这个有点特别,咱们前面呢,你要使用DB造个表,那你就只管往里放数据就完了,只要呢这个表空间啊,这个这个你使用独立表空间啊,还是系统表空间啊,只要这个表空间够就行。对吧,哎,这个满足它的上限就可以了,而我们这里边在创建表的时候呢,它是有个大小限制的,取两个参数,第一个呢叫max Rose啊,在造表的时候呢,指定另外呢叫max size啊,默认的是16兆。啊,就这样是吧,哎,你可以根据需要呢,给大家去做一个扩大啊,这是事实,根据需要扩大就行,OK啊知道这个事。嗯,然后呢,我们提到一下这个memory,它的存储的一个场景啊,这块大家要关注一下,因为呢,它是在内存当中的啊,所以呢,我们这个访问的话呢,这个效率呢会更高一些,所以说呢,如果你要是频繁的进行访问的话呢,我们就可以考虑使用这个memory。
13:13
嗯,当然你这个数据量呢,尽量小一点,数据量太大的话呢,可能会导致这个内存的溢出啊,不像我们其他的这个一整就是大几百兆是吧,甚至说上几个GB啊这样的特征的啊,我们这个要太大了,因为毕竟内存中嘛,呃,就可能会溢出了。嗯,OK,嗯,可以通过这个参数来去控制大小,然后呢,呃,如果我们这个表中的数据啊,它是临时的啊,这个必须立即可用,那我们就可以使用这个memory,那用完以后的话呢,我们可能丢了也无所谓啊,那这呢就用它呢比较合适。诶,我们在这个一开始讲这个存储引擎的时候呢,叫show engines里边呢,你看关于memory这里边也写了它的一个特征啊,主要描述呢,就是它使用的是哈希索引对吧,然后存储在这个内存当中,那对于我们这些一些临时的一些表啊,它是比较有用的啊,因为临时表用完之后呢,是不是也就不用持久化了,哎,我们就销毁也没有关系啊,就是这样特征。
14:07
好,后边这块呢,还提到这个,呃。啊,这个呢,是用于访问这个远程表的,相当于访问远程服务器的话呢,它是一个代理可以呢,实现跨服务器的一个灵活性啊,当然也经常带来问题,所以默认的情况下,它是一个禁用的,咱们在这呢,是不是也能看到这是一个no是吧?哎,默认是一个禁用的状态啊。行,然后下个呢叫墨引擎,默认呢,你看就合并的意思,它可以管理多个my s sum表构成的这个表的集合啊,这是它这个特征啊,这我就不多介绍了,了解来就行,这个NDB呢,这个引擎它主要呢,是用来这个处理我们麦斯库这集群的啊,处理集群的场景下呢,我们可以使用这样个引擎,它呢就类似于Oracle的这个IC这个集群。啊这呢,大家也做一个了解就行好,那么这呢,就是我们说的其他的这些引擎里边呢,大家关注一下,就我们这个R啊归档使用的CSV呢,可以做一种数据交换的一种格式出现,我们那memory呢,是内存级别的啊,如果呢,你希望呢,大量的这种小数据啊,用完呢就不用了啊,我们可以使用这个memory啊,默认的是哈希这个索引是吧?诶这样的主要的这几个呢,大家再关注一下就OK了。
15:16
行,那么这样的话呢,我们这一章呢,关于存储引擎啊,咱们就告一段落,那进而的话呢,我们关于底层的,像这个逻辑架构啊,说到了三层,然后呢,还提到这个存储引擎,咱们呢就完事儿,接下来的话呢,我们正式的进入啊,算是第二个篇章,就是我们跟这个索引相关的啊,这个章节呢,稍微多一些,呃,涉及到了我们在应用层面的话呢,关于呃这个调优的一些问题。好,那么我们就,哎,第五章先说到这儿。
我来说两句