美文网首页
ElasticSearch的segment file与merge

ElasticSearch的segment file与merge

作者: 白奕新 | 来源:发表于2019-09-25 21:14 被阅读0次

1、概念

(1)segment file:每次refresh以后,同一个shard的数据就会生成一个segment file。一个shard由多个segment file组成。
(2)merge:ES在内部会对属于同个shard的segment file进行merge,merge的结果时一个更大的segment file。

2、choice

  • merge的动作越少,merge带来的压力也就越少,写入性能会更好;但是segment file的文件数就越多,消耗文件句柄、内存、cpu也就越多;并且查询需要check每个segment file,查询性能也更差。
  • merge的动作越频繁,则segment file越少,毋庸置疑查询的性能越好,但是频繁的merge会损害写入性能。

3、other

  • 被标记删除的数据是在merge的时候才会被真正的删除。
  • merge的时候会去修改commit point文件。
  • 当merge的速度远落后于写入的速度时,ES会自动把写入的请求并发数限制为1,以防segment数过多。

4、Merge API

POST /INDEXNAME/_optimize?max_num_segments=1

  • optimize API不要用于dynamic index,主要适用于不会再改变的index,例如按天、按周等存储的分片。
  • optimize API不会被node throttle,会消耗许多的I/O,会导致search资源不足甚至节点不响应。

5、参数

参数 含义 备注
index.merge.scheduler.max_thread_count 用于merge的线程数 HDD:1;SSD:cpu核数/2
index.translog.flush_threshold_size translog的size阈值 调大translog的size阈值,能减小flush的频率,进而减小refresh的频率,从而减少segment数量
index.refresh_interval refresh的时间间隔 调大时间间隔,能减小refresh的频率,从而减少segment数量

相关文章

网友评论

      本文标题:ElasticSearch的segment file与merge

      本文链接:https://www.haomeiwen.com/subject/bkfiyctx.html