gpt4 book ai didi

ignite - 像 count、max、min 这样的简单聚合非常慢

转载 作者:行者123 更新时间:2023-12-02 08:03:48 26 4
gpt4 key购买 nike

我通过 RDMS 和 Ignite 集成将数据从 Oracle 加载到 Ignite 缓存中。缓存大小为4000万。当我做一些简单的聚合sql时,如下三个:

从人员中选择计数(id)

从 Person 中选择 max(id),

从 Person 中选择 min(id)

它们非常慢,每一个大约需要 5 分钟。

由于它们是非常简单的操作,可以使用 map 缩减机制来完成,无需任何数据移动,因此它应该非常快。

根据@Valentin 的评论:

我认为id列已启用索引。我使用 ignite-schema-import.sh 生成 CacheConfig 类,它包含以下代码:

idxs.add(new QueryIndex("id", true, "PK_ID"));

当我运行sql来解释计划时解释从 Person 中选择 min(id),

输出为


选择
最小值(ID)AS __C0
来自“人”.PERSON
/* "人".PK_ID */,
选择
最小值(__C0) AS __C0
来自公众.__T0
/* "人"."merge_scan"*/,

此外,我正在使用 OFFHEAP_TIERED 内存模式和以下代码

cacheConfig.setCacheMode(CacheMode.PARTITIONED);
cacheConfig.setBackups(0);
cacheConfig.setMemoryMode(CacheMemoryMode.OFFHEAP_TIERED);
cacheConfig.setOffHeapMaxMemory(0);
cacheConfig.setOffHeapMaxMemory(48*1024*1024*1024);
cacheConfig.setStatisticsEnabled(true);
cacheConfig.setCopyOnRead(false);

最佳答案

听起来id字段没有索引。如果是这样,这些查询意味着缓存扫描。您可以通过横向扩展来提高性能,但索引是更好的解决方案,特别是对于 minmax 查询。

<小时/>

更新。事实证明,在这种情况下没有使用索引。这是优化的票:https://issues.apache.org/jira/browse/IGNITE-4524

关于ignite - 像 count、max、min 这样的简单聚合非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41338405/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com