【问题标题】:MySQL: load on startup / load each time neededMySQL:启动时加载/每次需要加载
【发布时间】:2018-08-04 10:21:19
【问题描述】:

我的 discord bot 与外部 mysql 服务器通信以获取特定的用户数据,我想知道以下 2 个选项中哪个更有效:

  • 1:每次执行命令/代码时向服务器请求数据

  • 2:在启动时将整个表加载到列表中,并在执行命令/代码时从那里获取用户数据

如果我选择选项 2,需要多少 cpu?

意见不胜感激!

注意:我的机器人目前在大约 22 个服务器上,有 12000 个成员

编辑:机器人用来交流的代码是here

【问题讨论】:

  • Java 和 MySQL 代码在哪里?
  • 如果用户数据可能被刷新,则每次加载或缓存 10/5/1 分钟/秒。
  • 数据多久更改一次?我询问存储在 MySQL 服务器中的数据。观察:缓存是计算机科学中的一个难题。通过预加载数据,您正在缓存它,并承担管理这些缓存的困难。因此,除非出于性能原因,否则不要预加载。查找首字母缩略词 YAGNI 并认真对待。
  • @O.Jones 每次用户手动更新数据时,数据都会发生变化。所有更改均由程序进行

标签: java mysql discord


【解决方案1】:

我认为你应该使用你的第一个想法

因为如果您在启动时加载一个大表,您将浪费大量内存,并且您的列表中不会有数据库的最新状态。

另外,Mysql 可以很好地处理命令/代码的一个请求。

【讨论】:

  • 唯一的问题是每个请求大约需要 5 秒才能完成,用户体验因此受到影响
  • 你是如何编写你的 dicordbot 的?你的数据库真的很大吗?数千?数百万个元组?
猜你喜欢
  • 2017-06-06
  • 1970-01-01
  • 2018-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-02
  • 1970-01-01
相关资源
最近更新 更多