postgresql - 加载 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 小时(假设为线性插值)!这真的不是加载缓存的理想方式......
解决方案
推荐阅读
- hyperledger-fabric - 无法注册管理员用户:错误:调用注册端点失败并出现错误 [错误:套接字挂断]
- angular - 将鼠标悬停在绘制的多边形上时 Mapbox 显示区域
- reactjs - 为什么我的 React 组件列表在使用 Index 作为 key prop 时不会弄乱?
- javascript - 句点、单词和冒号的正则表达式
- c++ - 无法在 C++ 中使用计数作为全局变量
- windows-subsystem-for-linux - 尝试通过 ConEmu 启动 Windows Subsystem for Linux (WSL) 并提供其他命令
- python - AttributeError:模块“whois”没有属性“whois”
- ruby-on-rails - 为什么使用 Capistrano 将这些文件从共享路径复制到发布路径时,共享路径中的配置目录中的文件会被删除?
- scala - 无法解决重载的方法 IntelliJ 2018.2.8 / Scala 2.11.8/Spark 2.4.5
- node.js - 如何在 Windows 上使用 LF 而不是 CRLF 编写文件?