结合指标数据场景优化查询效率实战

结合 32 课,继续讨论关于优化查询效率的问题,上个课时中我们使用 es.search(dsl,index) 接口查询出了北京城市的所有天气数据,即使我们使用了 _source 字段控制了不必要的网络输出,但是我们是一次性把北京城市的数据全部都取回来了,并且使用 value_cout 字段统计了有多少条数据,然后设置 size,这里因为 size 比较小,没超过 10000 条,但是如果是上百万条呢?通过 value_cout 获取数据个数,然后再设置 size 一次性取回来吗?

当然是不允许了,无法再划分的取数据需求,我们可以分批取回所有数据,那就是 Scroll 接口。

ES 优化 Scroll

指定 index,指定 DSL,配置 Scroll 有效时间是 2 分钟,每次取 1000 个。关于 Scroll 原理之前的课时也介绍的很清楚了,就是会在 ES 里面生成一个数据快照,Scroll 会直接从这个快照里面取,快照不能够避免脏数据,因为不能够跟 ES 索引保持实时一致,如果数据快照已经生成,ES 索引数据发生改变,那么这更新后的 ES 数据是不会同步到数据快照中的。

data=es.search(index=index,body=dsl,scroll='2m',size=1000)

打开 data 面板,可以看到除了跟之前的相同字段外,多了一个 _scroll_id 字段,这个字段就是一个 token,拿着这个 token 就可以去相应的 ES 数据快照取。Scroll 的 timeout 设置也是比较重要的,如果一次任务 2 分钟执行不完

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL百万级数据查询优化是提高数据库性能的重要步骤。下面是一些建议: 1. 索引优化:通过合理的索引设计,能够加快查询速度。对于经常作为查询条件的列,添加索引能够提高查询效率。 2. 分页查询优化:对于大数据量的查询结果,可以使用分页查询来避免一次性加载所有数据。通过设置合理的分页大小,可以加快查询速度。 3. 使用合适的存储引擎:MySQL支持多种存储引擎,如InnoDB、MyISAM等。根据实际应用需求选择合适的存储引擎可以提高查询性能。 4. 查询语句优化:通过合理的查询语句设计,能够减少不必要的数据查询和计算,加快查询速度。例如,避免使用SELECT *查询所有列,只查询需要的列。 5. 分区表:对于大数据量的表,可以考虑使用分区表来提高查询性能。通过将表按照某个列进行分区,可以将数据分散存储在多个物理文件中,提高查询效率。 6. 调整内存和缓存配置:根据实际硬件情况和数据库负载,合理配置MySQL的内存和缓存参数,如缓存大小、连接池大小等,以提高数据库性能。 7. 查询计划优化:通过对查询执行计划进行分析,可以找出查询中存在的性能瓶颈,并对其进行优化。例如,添加合适的索引、调整查询语句等。 8. 数据库分片:对于超大规模的数据量,可以考虑将数据库分片存储在多个服务器上,通过分片查询来提高查询性能。 总之,针对百万级数据查询优化,需要综合考虑索引设计、分页查询、存储引擎选择、查询语句优化、分区表、内存和缓存配置、查询计划优化以及数据库分片等多个方面。不同的应用场景可能有不同的优化策略,需要结合实际情况进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值