首页 > 解决方案 > 加载 sql 数据以从 3rd 方数据源 (postgres) 点燃缓存的性能问题

问题描述

我已经部署了一个 ignite 集群,配置为内存缓存。您可以在此链接中找到配置。我正在使用 postgres 数据库中的 sql 数据加载缓存。为了加载缓存,我将一个 Ignite 客户端部署到集群。该客户端使用IgniteCache.loadCache()填充缓存功能。到目前为止,工作流程运行良好。但是性能很差。我已经用 1GB 的数据填充了 postgres。将这 1GB 的数据加载到缓存中需要 4 个小时!Ignite 集群由两个节点组成。每个节点有 2 个 CPU 和 8GB 的​​ RAM。提醒:只有 1GB 的数据被加载到缓存中......集群的内存(总共 16GB)在加载过程中被越来越多地使用。最后,全量(16GB)的 RAM 被使用了一个多小时……以下是集群的一些统计数据:点燃集群缓存加载作业大约需要 4 小时:

缓存加载器作业时间

我正在像这样加载一个又一个缓存:

//Nation
IgniteCache<Integer, Nation> nationCache = ignite.getOrCreateCache("NationCache");            
nationCache.loadCache(null);

//Region
IgniteCache<Integer, Region> regionCache = ignite.getOrCreateCache("RegionCache");            
regionCache.loadCache(null);

虽然缓存加载器作业尚未完成,但我可以通过向缓存发送 count(*) 查询来跟踪该过程。在作业终止之前,行数应该会增长并且实际上还没有完成。问题:我加载缓存效率低吗?是否有更高效的方式从 3rd 方数据源加载缓存?

出于测试原因,我计划将 postgres 数据库中的数据量增加到 10GB / 100GB。给定的加载速度不允许我这样做。加载 10 GB 的缓存需要 40 小时(假设为线性插值)!这真的不是加载缓存的理想方式......

标签: postgresqlcachingignite

解决方案


推荐阅读