使用 H2 缓存最新的行
Posted
技术标签:
【中文标题】使用 H2 缓存最新的行【英文标题】:Caching newest rows with H2 【发布时间】:2013-05-06 13:06:32 【问题描述】:我们在 H2 数据库中有一个相对较大的表,最多有 1200 万行。该表包含用户需要在 Web 界面上查看的状态信息。用户主要只对最近的几百/千个条目或最近 n 天的条目感兴趣。当然,有时也需要查询所有条目,但我们可以假设这种情况很少发生并且可能需要一些时间。现在我们的主要问题是,我们没有一个完整的服务器作为目标平台,而是一个更嵌入式的解决方案,并且使用这种大小的表,嵌入式系统需要几秒钟的时间来响应并且 web ui(使用 ajax 等)感觉迟缓。
为了使查询更快,我们已经添加了索引、max_row_memory 和缓存。这使得查询速度惊人地快,但仍然不在我们想要的范围内。 据我了解,如果对表执行 INSERT/UPDATE/DELETE,H2 会刷新表的缓存。应用程序的很大一部分取决于最后 n 行,我正在寻找一种始终将这些 n 行保留在缓存中的方法,这样即使在之前的 INSERT 之后调用了获取最后 n 行的 SELECT 查询,这些行是从缓存中收集的。 由于我没有直接在 H2 中找到任何解决方案,我的第一种方法是将缓存实现为应用程序内部的第二级。解决方案没问题,但从设计的角度来看,将它放在 H2 中更有吸引力。有人知道我如何用 H2 解决这个问题吗?
【问题讨论】:
你已经看过H2 performance tips了吗? 【参考方案1】:H2 不会在修改时刷新缓存。 最好的办法是在您的应用程序上运行分析器,以查看时间的去向。
【讨论】:
以上是关于使用 H2 缓存最新的行的主要内容,如果未能解决你的问题,请参考以下文章