【发布时间】:2021-11-01 07:43:54
【问题描述】:
我们的数据库管理员已建议我更改其会话的特定微服务。
alter session set optimizer_dynamic_sampling=2;
微服务服务于一个非常特殊的用例,它正在搜索大量订单(数据分为 3 个表),因此它可以在 SQL 开发人员会话中将分页结果返回给用户,在此会话更改查询时间后被切成两半。
我们的微服务是基于 Java Springboot 的,我们使用的是 JPA(Hibernate 实现),这是一个正在连接的 Oracle 数据库。正在运行的查询是本机查询。我只需要更改一次会话。出于明显的性能原因,我不想每次运行查询时都运行更改语句。话虽如此,如何确保 JPA 在我的池中创建的每个连接都使用此属性更新其相应的会话?似乎实体管理器工厂或实体管理器可以提供此功能.. 只是无法找到有关它的详细文档。
进一步说明.. 根据当前实现(该服务已经存在 2 年了),每次运行本机查询时都会创建并关闭一个实体管理器。尚无法确定这是否会使性能变得复杂,甚至还会导致性能下降。
欢迎所有提示/想法。 谢谢!
【问题讨论】:
标签: java oracle spring-boot hibernate jpa