MST

星途 面试题库

面试题:ElasticSearch索引设置对性能影响之中等难度题

在ElasticSearch中,索引的分片数和副本数设置如何影响其性能?请举例说明不同场景下的合理设置。
14.0万 热度难度
数据库ElasticSearch

知识考点

AI 面试

面试题答案

一键面试

分片数对性能的影响

  1. 存储与检索效率
    • 较多分片
      • 优点:可以将数据分布在更多的节点上,提高数据的并行处理能力。例如,一个大型电商网站的商品索引,有海量的商品数据。如果设置较多分片(如10个分片),当进行搜索时,多个分片可以同时处理查询请求,提高检索速度。在数据写入时,也可以并行写入不同分片,加快写入速度。
      • 缺点:过多分片会增加管理开销,每个分片都需要维护自己的元数据等信息。而且在查询时,过多分片之间的协调也会带来额外的网络开销。例如,当分片数达到100个时,查询时协调这么多分片的通信成本就会显著增加,可能导致性能下降。
    • 较少分片
      • 优点:管理开销小,查询时分片间协调成本低。比如一个小型企业的内部文档索引,数据量不大,设置2 - 3个分片即可。这样在查询时,协调成本低,能够快速响应。
      • 缺点:数据分布不均匀,处理能力受限。如果数据量突然增长,较少的分片可能无法满足并行处理的需求,导致读写性能下降。比如原来只有1000条文档的索引,设置了2个分片,当数据增长到10万条时,这2个分片可能会成为性能瓶颈。
  2. 负载均衡
    • 较多分片:能更好地在集群节点间分散负载。比如一个有10个节点的Elasticsearch集群,索引设置10个分片,每个节点可以承载一个分片,负载较为均衡。如果某个节点出现故障,其他节点可以承担故障节点上分片的负载。
    • 较少分片:可能导致负载不均衡。例如只有2个分片的索引,可能这2个分片都在同一个节点上,那么这个节点的负载会很重,而其他节点则闲置,降低了集群整体性能。

副本数对性能的影响

  1. 高可用性
    • 较多副本
      • 优点:提高了系统的容错能力和可用性。例如,一个新闻网站的文章索引,设置3个副本。当某个节点出现故障,其承载的分片不可用时,副本分片可以立即替代故障分片提供服务,保障数据的正常访问,减少系统停机时间。
      • 缺点:占用更多的存储空间。每个副本都是主分片的完整拷贝,会消耗额外的磁盘空间。同时,在数据写入时,需要同步更新主分片和所有副本,增加了写入的时间开销。比如写入一条数据,主分片写入后,还需要同步写入3个副本,写入速度相对较慢。
    • 较少副本
      • 优点:节省存储空间,写入性能相对较好。因为写入时只需要更新主分片,不需要等待副本同步完成(如果采用异步复制方式)。例如,一个临时的日志索引,对数据持久性要求不高,可以设置1个副本甚至不设置副本,这样写入速度快,并且节省磁盘空间。
      • 缺点:系统容错能力低。如果主分片所在节点故障,可能导致数据丢失或服务中断,影响系统的可用性。比如只有1个副本的情况下,主分片和副本在同一节点故障时,数据就无法访问。
  2. 读性能
    • 较多副本:可以增加读的并行度,提高读性能。例如,一个大型论坛的帖子索引,设置3个副本。当有大量用户查询帖子时,多个副本分片可以同时处理读请求,分散读负载,加快查询响应速度。
    • 较少副本:读性能相对较差,尤其是在高并发读的场景下。如果只有1个副本,所有读请求可能都集中在主分片和这一个副本上,容易造成读瓶颈。

不同场景下的合理设置

  1. 小型应用
    • 特点:数据量不大,读写并发不高,对存储资源比较敏感。
    • 设置:可以设置较少的分片数,如2 - 3个分片,副本数可以设置为0 - 1个。例如一个小型企业的内部办公文档索引,数据量在几万条左右,平时查询和写入操作不频繁,设置2个分片和1个副本即可满足需求,既能保证一定的可用性,又能节省存储资源。
  2. 大型高并发读应用
    • 特点:数据量巨大,读请求并发非常高。
    • 设置:适当增加分片数,如10 - 20个分片,同时设置较多的副本数,如3 - 5个副本。以大型电商搜索为例,商品数据量可能达到千万甚至上亿条,每天有大量用户进行商品搜索。设置较多分片可以并行处理查询,设置多个副本可以分散读负载,提高读性能,满足高并发读的需求。
  3. 高并发写应用
    • 特点:数据写入频繁,对写入性能要求高。
    • 设置:设置适量的分片数,如5 - 10个分片,副本数可以设置为1 - 2个,并且采用异步复制的方式。例如,一个物联网设备数据采集系统,每秒有大量设备数据写入。设置适量分片可以并行写入,减少副本数可以降低写入时同步副本的开销,采用异步复制方式可以进一步提高写入性能。同时,为了保证数据可靠性,设置1 - 2个副本。
  4. 对高可用性要求极高的应用
    • 特点:不能容忍任何数据丢失和服务中断。
    • 设置:设置适量的分片数,如5 - 10个分片,同时设置较多的副本数,如3 - 5个副本。例如,银行的交易记录索引,数据至关重要,不允许丢失。设置多个副本可以保证在节点故障时数据的可用性,适量的分片数可以保证数据处理的效率。