我们在 H2 数据库中有一个相对较大的表,最多有 1200 万行。该表包含用户需要在 Web 界面上查看的状态信息。用户主要只对最近的几百/千个条目或最近 n 天的条目感兴趣。当然,有时也需要查询所有条目,但我们可以假设这种情况很少发生并且可能需要一些时间。现在我们的主要问题是,我们没有一个完整的服务器作为目标平台,而是一个更嵌入式的解决方案,并且使用这种大小的表,嵌入式系统需要几秒钟的时间来响应并且 web ui(使用 ajax 等)感觉迟缓。
为了使查询更快,我们已经添加了索引、max_row_memory 和缓存。这使得查询速度非常快,但仍然不在我们想要的范围内。据我了解,如果在表上执行 INSERT/UPDATE/DELETE,H2 会刷新表的缓存。应用程序的很大一部分取决于最后 n 行,我正在寻找一种始终将这些 n 行保留在缓存中的方法,这样即使在之前的 INSERT 之后调用了获取最后 n 行的 SELECT 查询,这些行是从缓存中收集的。由于我没有直接在 H2 中找到任何解决方案,我的第一种方法是将缓存实现为应用程序内部的第二级。解决方案没问题,但从设计的角度来看,将它放在 H2 中更有吸引力。有人知道我如何用 H2 解决这个问题吗?