休眠缓存技术

Amo*_*kar 5 java struts caching hibernate in-memory-database

我有一个包含200个表格的应用程序-分为4组

  1. 非事务性(50个表)-诸如部门,名称等表,这些表有时会由管理员进行一次更新(100000次读取:1个写入比率和1个写入/月)

  2. 更少的事务性(50个表)-诸如设置,产品,税率之类的表,它们被读取得更多并且被插入的频率很少,但是每天都会发生写入(1000次读取:1个写入比率和1个写入/天)

  3. 事务性(50张表)-诸如订单,收据等表格,它们几乎相等地被写入和读取(10次读取:1次写入和1次写入/小时)

  4. 重型事务处理(50个表)-诸如任务,历史记录之类的表,它们被写入和读取较少,但被服务和报告使用(1次读取:1次写入和1次写入/分钟)

我正在使用hibernate,struts2和spring,并在寻找缓存策略以获得最佳性能和效率。

如果您观察到我在读写最多的表中有更多数据,那么将它们缓存在更关键的位置。

我可以缓存第4组表吗?如果是,怎么办?

我可以缓存第3组表吗?如果是,怎么办?

我可以缓存第2组表吗?如果是,怎么办?

我可以缓存第1组表吗?如果是,怎么办?

我可以在内存数据库中使用某些表吗?

在某些情况下,视图对我有帮助吗?什么情况

好吧,我最后想要的是从内存数据库中进行快速读取访问,这会随着数据库的更改而更新我的内存数据库。就像说我有产品列表,订单列表在内存中一样,但是当添加任何新产品或订单时,此列表必须重新加载。通常,所有读取都从某个内存数据库中进行,而所有写入均通过触发器触发直接db来更新列表或列表项。

Man*_*uPK 4

让我们从缓存的经验法则开始,

\n

缓存经常读取且很少更改的非事务性数据

\n

Hibernate 可以让您非常安全地到达那里。从这一点来看,即使您仍然可以使用缓存,但并不真正推荐,因为您可能会遇到多个问题。因此,最好谨慎行事。看看下面的文章列表,它会给你更多的见解。

\n
    \n
  1. Hibernate:真正理解二级缓存和查询缓存
  2. \n
  3. 了解 Hibernate 中的缓存 \xe2\x80\x93 二级缓存
  4. \n
  5. 提高 Hibernate 的性能
  6. \n
\n

因此,当我们将此规则应用于您的场景时,只有第一组应该被缓存。首先,测量您的应用程序的性能改进情况。如果一切正常,您也可以考虑缓存第二组。不建议缓存事务表,因此排除第 3 组和第 4 组。

\n