gpt4 book ai didi

java - JDBC 查询缓存和预缓存

转载 作者:行者123 更新时间:2023-11-30 11:12:32 27 4
gpt4 key购买 nike

场景:

我需要在我的网络服务中缓存数据库查询的结果。在一个服务调用的周期内查询了大约 30 个表。我相信服务会频繁访问特定日期范围内的数据,我想预缓存该数据。这意味着在应用程序启动时缓存大约 800,000 行,数据是只读的。数据不需要动态刷新,这是引用数据。无法在每次服务调用时加载缓存,因为数据太多了。这个“经常使用”窗口之外的数据不是时间关键的,可以延迟加载。大多数查询将返回 1 行,并且没有一个表彼此之间有父/子关系,尽管会有一些连接。不需要动态 sql 支持。

选项:

我打算使用myBatis,但是没有好的方法来预热缓存。 myBatis 无法理解服务查询 select * from table where key = ? 已经被启动预缓存查询 select * from table 覆盖了。

据我了解(文档过载),Hibernate 也有同样的问题。此外,这些表设计有复合键,没有主键,这对 Hibernate 来说是一个额外的麻烦。

问题:

首选:这个问题有myBatis的解决方案吗?我非常愿意使用它。 (熟悉度、简单性、性能、有趣的名字等)

或者:是否有 ORM 或 DB 友好的缓存可以提供我正在寻找的东西?

最佳答案

您可以使用类似 NCache 的分布式缓存解决方案或 Tayzgrid它提供索引和查询功能以及缓存启动加载程序。

您可以为缓存中实体的属性配置索引。 cache startup loader可以配置为在缓存启动时从缓存中的数据库加载所有数据。在加载数据时,缓存将为内存中的所有实体创建索引。

Object Query Language (OQL)功能,它提供类似于 SQL 的查询,然后可用于查询内存中的数据。

关于java - JDBC 查询缓存和预缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26850275/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com