53.doc value机制内核级原理深入探秘

Posted Outback

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了53.doc value机制内核级原理深入探秘相关的知识,希望对你有一定的参考价值。

主要知识点:

doc value的原理

doc value性能优化

   

一、doc value原理

   

1 生成时间:index-time生成

   

PUT/POST的时候,就会生成doc value数据,也就是正排索引

   

2 核心原理与倒排索引类似

   

正排索引,也会写入磁盘文件中,然后呢,os cache先进行缓存,以提升访问doc value正排索引的性能

如果os cache内存大小不足够放得下整个正排索引,doc value,就会将doc value的数据写入磁盘文件中

   

二、doc value性能优化

   

1、、性能问题:给jvm更少内存,64g服务器,给jvm最多16g

   

es官方是建议,es大量是基于os cache来进行缓存和提升性能的,不建议用jvm内存来进行缓存,那样会导致一定的gc开销和oom问题。所以给jvm更少的内存,给os cache更大的内存。比如一台服务器有64g内存,es建议给jvm最多16g,余下的内存给os cacheos cache可以提升doc value和倒排索引的缓存和查询效率

   

2column压缩

   

1)所有值相同,直接保留单值,对于相同的值只保留一份单值的标识即可。

2)少于256个值,使用table encoding模式:一种压缩方式

3)大于256个值,看有没有最大公约数,有就除以最大公约数,然后保留这个最大公约数

4)如果没有最大公约数,采取offset结合压缩的方式:

   

3disable doc value

   

如果的确不需要doc value,比如聚合等操作,那么可以禁用,减少磁盘空间占用

   

PUT my_index

{

"mappings": {

"my_type": {

"properties": {

"my_field": {

"type": "keyword"

"doc_values": false

}

}

}

}

}

以上是关于53.doc value机制内核级原理深入探秘的主要内容,如果未能解决你的问题,请参考以下文章

《深入理解mybatis原理4》 MyBatis缓存机制的设计与实现

深入Windows内核——C++中的消息机制

Java SPI 机制源码级深度理解

浅析Linux字符设备驱动程序内核机制

深入浅出Binder进程间通信机制

深入理解Binder