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

时间:2019-03-05 19:12:31

标签: java mysql database multithreading performance

我想知道将ConcurrentHashMaps用于用户数据是否有用。我将用户数据保存在mysql数据库中,并在用户登录(或有人编辑用户)时检索它们。每当用户进入另一个页面时,这些用户数据将被刷新。我应该使用地图并将应用程序中的更改保存在那里,同时将数据库置于后台,还是应该直接从数据库下载它。我想让应用程序尽可能地表现出色。

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

填充高速缓存的过程与查询db以获取数据的时间相同(通常更多,但顺序相同)。因此,只有在及时带来好处的情况下才使用缓存。但是,数据的速度新鲜度之间存在折衷。根据您的用例,您必须在这两者之间找到适当的折衷方案,然后您将确定它是否真的很方便。

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

答案 2 :(得分:0)

人类无法分辨1毫秒延迟和50毫秒延迟之间的差异。因此,超出“足够好”的范围进行优化是矫kill过正。

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

相关问题