elasticsearch segment数量对读写性能的影响

打印 上一主题 下一主题

主题 1561|帖子 1561|积分 4685

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
index.merge.policy.segments_per_tier 是一个配置选项,用于控制 Elasticsearch 中段(segment)归并策略的行为。它界说了在每一层的段归并过程中,答应存在的最大段数量。调解这个参数可以优化索引性能和资源利用。

假设你有一个索引 my_index,你可以通过以下方式调解 segments_per_tier 配置:
  1. PUT /my_index/_settings
  2. {
  3.   "settings": {
  4.     "index.merge.policy.segments_per_tier": 10  // 设置每层的最大段数为 10
  5.   }
  6. }
复制代码


  • segments_per_tier:这是段归并策略中的一个参数,它控制每一层段归并时答应存在的最大段数。当段数量超过这个阈值时,Elasticsearch 会尝试将这些段归并成更少的段。
  • 默认值:通常,默认值是 10,表示每层最多答应存在 10 个段。


利用场景



  • 高写入速率场景:如果你的索引写入速率很高,调解 segments_per_tier 可以资助控制段的数量,减少段归并的频率,从而提高性能。
  • 查询优化:在某些查询密集的场景中,得当调解段归并策略可以优化查询性能,由于较少的段数可以减少查询时需要访问的段数量。

其他相关配置

除了 segments_per_tier,另有其他相关的配置选项可以进一步优化段归并策略:


  • index.merge.policy.max_merge_at_once:一次归并的最大段数。
  • index.merge.policy.max_merged_segment:单个归并段的最大大小。
  • index.merge.policy.floor_segment:最小段大小。
  1. PUT /my_index/_settings
  2. {
  3.   "settings": {
  4.     "index.merge.policy.segments_per_tier": 10,        // 每层的最大段数
  5.     "index.merge.policy.max_merge_at_once": 5,        // 一次合并的最大段数
  6.     "index.merge.policy.max_merged_segment": "5gb",   // 单个合并段的最大大小
  7.     "index.merge.policy.floor_segment": "2mb"         // 最小段大小
  8.   }
  9. }
复制代码

归并过程示例

假设 segments_per_tier 被设置为 10,以下是段归并的示例:

  • 第一层(Tier 0)

    • 初始写入操纵会创建新的段,这些段首先位于第一层(Tier 0)。
    • 当第一层的段数量超过 10 时(比方有 11 个段),Elasticsearch 会开始归并这些段,将它们归并成一个新的段,并将其移动到更高一层(Tier 1)。

  • 第二层(Tier 1)

    • 归并后的段如今位于第二层(Tier 1)。
    • 第二层的段数量限定同样是 10,当第二层的段数量超过 10 时,再次触发归并,将这些段归并成更大的段,并将其移动到更高一层(Tier 2)。

  • 依次类推

    • 这个过程会不停连续,每一层中的段数量超过 segments_per_tier 时,都会触发归并操纵,将段移动到更高的层级,形成更大的段。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

南七星之家

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表