我正在使用Hibernate 4.2,JPA 2.0和Postgres 9.2
代码卡在 Persistence.createEntityManagerFactory("peristence_unit_name");
在进一步调查中,我发现Hibernate调用getTypeInfo()
了java.sql.DatabaseMetaData
class
方法。此方法尝试加载有关每个数据库对象的元数据
/**
* Perform the extraction
*
* @param metaData The JDBC metadata
*
* @return The extracted metadata
*/
public static LinkedHashSet<TypeInfo> extractTypeInfo(DatabaseMetaData metaData) {
LinkedHashSet<TypeInfo> typeInfoSet = new LinkedHashSet<TypeInfo>();
try {
ResultSet resultSet = metaData.getTypeInfo(); // << Gets stuck here.
try {
......
的代码getTypeInfo()
是Postgers的JDBC驱动程序的一部分,而确实是花费时间来执行该方法的驱动程序(我加载了驱动程序源并尝试了跟踪)。但是由于这个问题在Hibernate
3.3(我之前使用过)中没有发生,所以我认为Hibernate 3.3并未调用此方法,而Hibernate 4.2却在调用。
有办法解决这个问题吗?注意,与Hibernate 3.3相同的设置可以正常工作。
额外信息:驾驶员在这段时间内一直在做什么:
它首先获取数据库对象的列表,然后循环遍历结果集以获取每个对象的元数据。
数据库中大约有3000个对象(我有一个非常大的数据集,需要很多分区表。加上PostGIS拥有许多自己的对象)
每个对象查找大约需要1秒,因此大约需要3000秒才能完成调用。
我有同样的问题,由于某种原因,它需要很长时间才能提取JDBC元数据以进行hibernate。您只需关闭使用jsbc元数据进行hibernate,它将变得非常快。但是请记住,hibernate状态不使用jdbc元数据,而是使用一些默认值。
要尝试将此设置hibernate.temp.use_jdbc_metadata_defaults
为false。
<prop key="hibernate.temp.use_jdbc_metadata_defaults">false</prop>
问题内容: 升级到macOS Sierra之后,“ sbt测试”(包括查找本地主机名称/ IP地址)的性能似乎出现问题。在OS X的早期版本中,大约需要40-50秒才能完成。macOS Sierra时间远不止于此。我上次跑步大约是15分钟。编译时间与“ El Capitan”上的时间大致相同。 我是团队中唯一尝试使用此新macOS的人,因此我无法确定它是否仅在我的Mac上发生,还是普遍存在。 我的
此代码用于生成excel报告。有15列,如果记录数在1000左右,生成excel表需要近10-15分钟。上面的代码有什么问题吗?如何提高性能(Excel报告生成时间减少)?
问题内容: 我有一个以datetime为参数的查询,我们观察到的是,如果通过变量提供datetime参数,则执行查询的时间比直接对参数进行硬编码要多2 -3倍,是否有任何原因或解决方案?对此 以下查询大约需要5分钟才能返回结果 虽然作为 它会在10到20秒内返回 我并不总是希望在列上使用索引进行搜索。 按照kevchadders的建议,我看到执行计划有很大的不同。使用日期变量的查询正在执行聚集索引
我使用javamail通过IMAP协议从exchage帐户读取邮件。这些邮件是纯格式的,内容是XML。 几乎所有这些邮件的大小都很短(通常小于100Kb)。然而,有时我不得不处理大型邮件(大约10Mb-15Mb)。例如,昨天我收到一封13Mb大小的电子邮件。仅仅读它就花了50多分钟。这正常吗?有没有办法提高它的性能?代码是: 花费如此长时间的方法是。我做错了什么?有什么提示吗? 非常感谢,我的英语
问题内容: 当使用请求库请求Web资源或网站或Web服务时,请求需要很长时间才能完成。该代码类似于以下内容: 此请求需要2分钟(恰好是2分钟10秒)才能完成!为什么这么慢,我该如何解决? 问题答案: 这个问题可以有多种可能的解决方案。关于StackOverflow的答案很多,因此,我将尝试将它们全部组合起来,以免您寻找它们的麻烦。 在搜索中,我发现了以下几层: 对于许多问题,激活日志记录可以帮助您
给出结果需要20多秒,而在mongo控制台中同样的查询需要不到一秒。 为什么会出现这种情况,如何减少速度差距?