Making the best use of caches
2016-07-22 00:00
211 查看
Es可以用廉价的硬件资源和毫秒级的速度搜索数亿的文档,其中优秀的缓存机制起了一定的作用。
三个缓存点:1. 过滤器缓存
2. 分片的查询缓存,运行聚合操作在静态索引
3. 操作系统缓存,保证I/O高性能传输
设置查询预处理:index warmers
Filters and filter caches
通过_cache字段控制过滤器缓存:true/false
小贴士:不是所有的过滤器会用_cache控制缓存
过滤器的缓存会被所有的节点共享:当前集群的设置是30%,超过的会采用least recently used (LRU)淘汰。
但是会遇到这样的性能瓶颈,一个查询被缓存了,但是查询一次之后就没有被使用了,而缓存会一直存在直到到达30%的限制之后,就会被释放,这样好吗?肯定是不好的,当查询缓存被使用完了,每一个搜索都会消耗cpu的资源来使旧的缓存被释放从而存放新的缓存条目。
所以为了使得ElasticSearch变得聪明一些,我们设置了缓存失效时间,根据实际需要设置,例如:30分钟。
他们紧凑和易于创建,所以创建缓存的开销过滤器是首次运行时微不足道
重复利用
Bitset之间可以很容易的进行组合,ElasticSearch也可以很容易的得到bitset组合的结果。
过滤器缓存形式有三种:bitset,cache the overall results,field data
Field data 在排序和聚合的时候会使用,term 和range过滤器查询也会使用到。
三个缓存点:1. 过滤器缓存
2. 分片的查询缓存,运行聚合操作在静态索引
3. 操作系统缓存,保证I/O高性能传输
设置查询预处理:index warmers
Filters and filter caches
通过_cache字段控制过滤器缓存:true/false
小贴士:不是所有的过滤器会用_cache控制缓存
过滤器的缓存会被所有的节点共享:当前集群的设置是30%,超过的会采用least recently used (LRU)淘汰。
但是会遇到这样的性能瓶颈,一个查询被缓存了,但是查询一次之后就没有被使用了,而缓存会一直存在直到到达30%的限制之后,就会被释放,这样好吗?肯定是不好的,当查询缓存被使用完了,每一个搜索都会消耗cpu的资源来使旧的缓存被释放从而存放新的缓存条目。
所以为了使得ElasticSearch变得聪明一些,我们设置了缓存失效时间,根据实际需要设置,例如:30分钟。
他们紧凑和易于创建,所以创建缓存的开销过滤器是首次运行时微不足道
重复利用
Bitset之间可以很容易的进行组合,ElasticSearch也可以很容易的得到bitset组合的结果。
过滤器缓存形式有三种:bitset,cache the overall results,field data
Field data 在排序和聚合的时候会使用,term 和range过滤器查询也会使用到。
相关文章推荐
- Allocation awareness分配意识
- Balancing JVM heap size and OS caches
- html5兼容ie8 ie9
- UVa 116
- Android应用逆向——最好用的两个无源码调试器
- 提高项目41-命令行加法器
- Unity初识iTween
- CodeForces Gym 100646C LCR
- java中集合的分类
- 套接字描述符的理解
- OSI七层与TCP/IP五层网络架构详解
- java中有关内部类的相关问题
- MSP430单片机外围晶振设计选型及参考方案
- [SPI]如何确定和设定spi传输的时序
- 西安微信网站建设教您如何选择微信开发公司
- Bootstrap-路径导航源码摘记
- Centos 使用yum安装及卸载软件
- 学习Git
- 本地代码仓库push时:error: failed to push some refs to
- 使用Git的基本步骤