【问题标题】:sql query is slow when writing cache data on apache ignite cluster在apache ignite集群上写入缓存数据时sql查询很慢
【发布时间】:2019-03-29 11:10:11
【问题描述】:

在apache ignite 2.7.0和2.3.0上测试,如果没有缓存数据在写入,sql查询很快,但是当我写入数据时,sql查询变慢了,为什么?

当数据写入 apache ignite 缓存时如何使 sql 查询快速? 或者如何在apache ignite上分离缓存读写?

如下定义一个缓存实体 ABData 并使用 Streamer.add 方法加载 3000 个 ABData 10 次。 每次我们已经加载了所有的 ABData 之后(假设 10 分钟后,这意味着 3000 个 ABDatas 已添加到 ignite 缓存中),运行 SqlFieldQuery('select * from ABData'),所有 ABDatas 在 5 毫秒内返回。 但是每次3000个ABData还在加载中(比如每次加载ABData之前,我们启动另一个线程用SqlFieldQuery查询ABData),运行SqlFieldQuery('select * from ABData'),100之后返回所有的ABData毫秒。

public class ABData {

    @QuerySqlField(index = true)
    private String code;

    @QuerySqlField(index = false)
    private String configData;

    @QuerySqlField(index = false)
    private Integer categoryID;

}

【问题讨论】:

  • 很遗憾,如果不了解您的查询或工作量,就很难回答。
  • 我更新了问题,看看能不能帮助你理解。

标签: java sql ignite


【解决方案1】:

很难说这里发生了什么。我建议你调试这个问题,例如堆栈跟踪并试图找出时间花在哪里/锁定发生在哪里。

那么在你的场景中可能会出现一些问题,比如创建短暂的服务器节点来做数据流。他们来或走时都会触发重新平衡。

【讨论】:

    猜你喜欢
    • 2020-08-16
    • 2017-07-14
    • 1970-01-01
    • 2016-02-10
    • 2018-12-25
    • 2018-07-21
    • 2019-06-01
    • 1970-01-01
    • 2023-01-22
    相关资源
    最近更新 更多