我在DBeaver中有一个查询,运行时间约为6ms,我使用常规日志提取传入的查询,该查询与我的Tomcat服务器连接的数据库相同
select min(organizati0_.Downloaded) as col_0_0_ from oss_collection_history organizati0_
where organizati0_.AccountingSystem='SomeSystem'
and (organizati0_.Org in ('ID1' , 'ID2', ..., 'ID10' ))
在针对数据库的Dockerized副本运行Spring Data JPA的JUnit测试中,该查询也运行得相当快,只需60毫秒,但是在Tomcat上,它需要8-10秒以上。
所以不完全确定发生了什么。
我只是使用相同的参数来分析函数调用。
var start = System.currentTimeMillis();
consolidatedDownloadSvc.getAvailableYearsOfDownloadedForAccountingSystem(...);
System.out.println(System.currentTimeMillis() - start);
即使我设置了全局log_queries_not_using_indexes = 'ON',
它也不会出现在 slowlog 上;因此,这将向我指示查询已编入索引。
所以我想知道是否有某种日志可以显示我在Spring-Data和Hibernate中可能丢失的任何额外的东西。
除了@Panagiotis所建议的,让下面的统计数据了解hibernate在哪个阶段花费更多时间也是有帮助的。
spring.jpa.properties.hibernate.generate_statistics=true
logging.level.org.hibernate.stat=DEBUG
您会在日志中看到如下内容
2021-12-29 10:54:52.408 INFO 31972 - – [ main] i.StatisticalLoggingSessionEventListener : Session Metrics {
5070899 nanoseconds spent acquiring 1 JDBC connections;
0 nanoseconds spent releasing 0 JDBC connections;
4359903 nanoseconds spent preparing 20 JDBC statements;
76117198 nanoseconds spent executing 20 JDBC statements;
0 nanoseconds spent executing 0 JDBC batches;
132026893 nanoseconds spent performing 40 L2C puts;
0 nanoseconds spent performing 0 L2C hits;
838900 nanoseconds spent performing 19 L2C misses;
0 nanoseconds spent executing 0 flushes (flushing a total of 0 entities and 0 collections);
16900 nanoseconds spent executing 1 partial-flushes (flushing a total of 0 entities and 0 collections)
}
问题内容: 简而言之,我需要能够将已编译的可执行文件粘贴到Java jar文件中,然后能够从Java运行它(可能通过)。 的 原因 ,是我想使用Java来包裹ImageMagick的可执行文件成分的图像处理弹性的Map Reduce任务。EMR只希望获取一个jar文件,因此我认为没有空间在旋转的数据节点上安装软件。 问题答案: jar中的可执行文件是一种资源,您可以通过Stream访问它,并将可执
导致生成完全失败(不是以正确的方式): 失败:生成失败,出现异常。 *错误:任务“:app:compiledebugjava”执行失败。 是否不支持adding-werror?
通常在大口大口的任务看起来像这样: 是否可以将命令行标志传递给gulp(这不是任务)并让它基于此有条件地运行任务?例如 然后在我的gulpfile.js:
问题内容: 有没有一种方法可以缓慢地运行使用量角器编写的Angular E2E测试,以便我可以观察发生了什么? 问题答案: 下面是我的解决方案。因此,基本上,我为当前的控制流功能创建了一个装饰器,该装饰器现在另外在每个已排队的操作之前排队100ms的延迟。 这需要在调用任何测试之前运行(外部块)
问题内容: 是否可以在tomcat的URL中关闭jsessionid?jsessionid似乎对搜索引擎不太友好。 问题答案: 你可以使用此过滤器仅对搜索引擎禁用,但我建议对所有响应都使用它,因为它比不友好的搜索引擎更糟糕。它公开了可用于某些安全漏洞的会话ID(更多信息)。 Tomcat 6(6.0.30之前的版本) 你可以使用tuckey重写过滤器。 Tuckey过滤器的示例配置: Tomcat