温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:00
接下来我们来学习第五章ES软件的优化。首先我们第一个讲的优化呢是缓存优化,ES软件在应用时会使用大量的缓存来提高我们数据检索的速度,我们主要有三种缓存,第一个叫页缓存,第二个叫分片级别的请求缓存,第三个叫查询缓存。所谓的页缓存啊,我们简单的可以理解为是操作系统级别的缓存,为什么它是由操作系统来缓存数据?而我们的分片级请求缓存呢,我们可以理解为叫节点级别的缓存。那么所谓的节点级别的缓存呢?就是因为我们是服务器节点,帮助我们把数据缓存起来,还有我们的查询缓存,我们可以理解为是功能缓存,所以啊,它的范围是比较窄的啊,那么我们一个一个来简单的说一下,首先页缓存是因为我们Java的应用程序无法直接跟我们的数据文件进行打交道。所以我们要通过操作系统来进行中转,操作系统为了提高IO的效率,它会在内核中首先申请内存页来进行我们数据的操作,所以我们的操作系统呢,可以提供缓存来提高数据的访问效率。
01:11
如果我们的操作系统有更多的这种缓存,我们的效率就会特别的高,那么这样的话,我们的ES应用程序就不能够占用系统的太多内存,所以在这种情况下,我们一般会要求我们的ES软件的内存不能超过总内存的一半,那这样的话,我们另一半就可以用来做页缓存来提高我们的效率,是这样的一种情况啊。那好,下面是分片级别的请求缓存,我们这个称之为叫节点级别的缓存,就是说把我们的数据给它存储到某一个节点当中,那这样的话我们可以缓存更多的数据,这不挺好吗?这个我们称之为叫请求缓存,那么这个请求缓存啊,默认它是不开启的,它不开启的话,如果想开启的话,我们需要给它进行配置开启,这个是大家需要注意的啊。
02:00
开启缓存后,需要在搜索请求中加上一个参数,才能把我们查询的结果进行缓存啊,所以这个我们稍微的需要注意一些啊,好了,接下来我们再往下,下面呢是我们的查询缓存,我们的查询缓存呢,其实说的简单点,就是有专门的类来进行数据的缓存,那么它的缓存啊,只对特定的查询有效,所以这种操作对于我们来讲它的范围更小一些,但是呢,它也可以提高我们的性能,查询缓存其实就是对查询的结果呢进行我们的缓存,说白了就是对某一些功能进行的缓存。所以它所查询的缓存啊,更加精细,可以缓存数据,在不同的查询之间来重复使用这些数据,让我们的查询效率更快,所以啊,缓存的目的其实说的简单点,就是为了提高我们的查询效率,对不对啊,就是这样啊,所以缓存还是非常重要的。那么这里提出了一个问题,缓存是加快检索速度的唯一方法吗?缓存是加快检索速度的主要方法,当然了,它不是唯一的,还有很多其他的方式,比方说从操作系统的级别来提高我们的IO效率,或者说从我们Java虚拟机的角度来提高我们的O效率,这都是可以的。缓存只能作为一种技术手段,但是我们从功能上,从架构上来设计的话,其实也可以极大的提升我们的检索速度啊,这个我们需要分的清楚。
我来说两句