【发布时间】:2012-04-29 18:20:22
【问题描述】:
我有一个包含 200 个表的应用程序 - 分为 4 组
非事务性(50 个表)- 部门、指定等表,有时由管理员更新一次(100000 次读取:1 次写入率和 1 次写入/月)
事务性较少(50 个表)- 诸如设置、产品、税率之类的表读取次数较多,插入频率较低,但每天都会发生写入(1000 次读取:1 次写入比率和 1 次写入/天)
事务性(50 个表)- 写入和读取几乎相同的订单、收据等表(10 次读取:1 次写入和 1 次写入/小时)
-
Heavy Transactional(50 个表)- 诸如任务、历史记录等表,这些表写入更多,读取更少,但被服务和报告使用(1 次读取:1 次写入和 1 次写入/分钟)
李>
我正在使用 hibernate、struts2 和 spring,并正在寻找缓存策略以获得最佳性能和效率。
如果您发现我在写入和读取最多的表中有更多数据,因此将它们缓存在更关键的位置。
我可以缓存第 4 组表吗?如果是怎么办?
我可以缓存第 3 组表吗?如果是怎么办?
我可以缓存第 2 组表吗?如果是怎么办?
我可以缓存第 1 组表吗?如果是怎么办?
我可以在内存数据库中使用某些表吗?
在某些情况下视图会帮助我吗?哪些情况?
好吧,我最终想要的是从内存数据库中快速读取访问,一些东西会随着数据库的变化而更新我的内存数据库。比如说我有产品列表,内存中有订单列表,但是当添加任何新产品或订单时,这个列表必须重新加载。通常,所有读取都从某个内存数据库中读取,而所有写入直接 db 并触发更新列表或列表项。
【问题讨论】:
-
如果您的最高活动是每分钟 1 次操作,我严重怀疑缓存是否重要。数据库速度非常快,每分钟 1 次读取/写入不太可能使您的数据库不堪重负。仅当您遇到性能问题并且已经测量并证明缓存是解决方案时才进行优化。否则,您将毫无意义地增加复杂性。
-
不,它只是每个用户每张桌子的一个球标数字,将有 100 个用户和多个桌子.......基本上需要更多 n 更快:) 即使它不是一个非常大规模的系统,但为了满足一个请求,我们必须将响应时间减少到尽可能短。
-
您正在使用 Hibernate 特定的 API 或 JPA 与 Hibernate 作为实现?
-
Hibernate 特定的 api。没有 jpa。
标签: java hibernate caching struts in-memory-database