为了账号安全,请及时绑定邮箱和手机立即绑定

Web 应用程序数据库或地图以提高性能

Web 应用程序数据库或地图以提高性能

凤凰求蛊 2022-07-20 15:53:16
我想知道对用户数据使用 ConcurrentHashMaps 是否有用。我将用户数据保存在 mysql 数据库中,并在用户登录(或有人编辑用户)时检索它们。每次用户进入另一个页面时,这些用户数据都会被刷新。我应该使用地图并在那里保存我的应用程序中的更改,同时在后台有一个数据库,还是应该直接从数据库下载它。我想让应用程序尽可能高性能。
查看完整描述

3 回答

?
胡说叔叔

TA贡献1804条经验 获得超8个赞

您所描述的是缓存。假设调用数据库的成本很高,因为要加载很多信息,或者用于提取数据的查询很复杂并且需要很多时间。缓存数据结构在这里发挥作用。它基本上是一种内存存储,查询数据库确实更快,因为它确实已经加载到内存中。

填充缓存的过程与在数据库中查询数据所需的时间相同(通常更多但顺序相同)。因此,只有在及时带来好处时才使用缓存。但是,速度与数据的新鲜度之间存在折衷。根据您的用例,您必须在这两者之间找到正确的折衷方案,然后您会发现它是否真的方便。

正如您所描述的那样,即需要保存和显示的用户更新,使用缓存似乎有点过分IMO,除非您有很多注册用户,而且其中有很多同时使用系统。如果您决定使用它,请记住一些可能会出现的并发问题。并发哈希映射可以使您免于许多危险,但会降低性能。


查看完整回答
反对 回复 2022-07-20
?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

如果性能是优先级,我认为您应该将登录的用户保留在内存中。

这样,读取请求会很快,因为您不需要查询数据库。但是,如果任何登录的用户会以某种方式被编辑,您将需要更新地图。


查看完整回答
反对 回复 2022-07-20
?
冉冉说

TA贡献1877条经验 获得超1个赞

人类无法分辨 1 毫秒延迟和 50 毫秒延迟之间的区别。因此,超出“足够好”的优化是矫枉过正的。

MySQL 已经做了一些缓存。您添加另一个缓存实际上可能会减慢响应时间。


查看完整回答
反对 回复 2022-07-20
  • 3 回答
  • 0 关注
  • 112 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信