我在Sping Boot 中编写了一个服务,并使用Spring Data JPA从8个不同的Oracle数据库中检索数据。所有数据库都具有相同的模式,查询也是相同的。当前的实现执行得不是很好,因为查询是按顺序执行的,响应需要很多分钟。
目前,我在Spring data JPA中使用多租户,使用不同的Datasheet和Datasheet Manager配置,并通过它们来实现这一点。创建多线程架构是否会提高性能,或者是否有其他框架或设计模式可以帮助实现这一点。我没有使用Spring Webflux,但实现它会有助于提高性能吗?
1条答案
按热度按时间x33g5p2x1#
我建议研究以下主题:
*Fetch Size:(默认为10)如果您需要获取数百或数千个条目,这可以通过减少数据库和应用程序之间的网络调用来大幅提高性能。如果数据库不在同一个网络中或距离较远,通过VPN等,这一点尤其重要。
***连接池最小、最大、空闲大小:**取决于应用程序的并发性,这可能会对正确设置它有很大帮助。
***设置只读标志:**休眠默认为读写模式,告诉查询为只读,可以加快速度,也可以保存一些内存。
***多线程:**是的,你是对的,你可以利用多线程,我建议创建一个ExecutorService并提交任务,然后等待,直到最慢,以及其余完成。因为从应用程序的Angular 来看,查询数据主要是等待,因为数据库做了大部分工作。
一般很难给给予一个确切的答案如何做正确的,因为它取决于许多因素,但如果你开始学习更多关于这些主题可以走得很远。
非常好的材料开始:
祝你好运的优化!