美文网首页
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