PostgreSQL开放连接需要太长时间

时间:2018-03-15 14:09:24

标签: spring postgresql hibernate jpa

我目前正在使用以下libs / frameworks开发一个项目:

  • hibernate:5.2.11.Final
  • spring:5.0.2.RELEASE
  • postgresql:9.4.1212
  • mysql:5.1.31
  • spring-data-jpa:2.0.2.RELEASE

该项目应该在Postgres和mysql中都可用。我还使用名为“Prefix”的分析器程序来跟踪可能的性能问题。 我意识到我对postgresql的所有查询花费的时间比在mysql上查询的时间要长,所以我决定查看profiler是什么问题。 每当我尝试在mysql(DriverManager.getConnection)上建立一个与数据库的新连接时,它需要5到10毫秒之间的时间,而与postgresql相同的连接需要大约200ms +。

你们知道什么可能使postgresql上的驱动程序连接比mysql更长?

以下是db的配置方式:

public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
...
dataSource.setDriverClassName(org.postgresql.Driver);
...
}

private Properties hibernateProperties() {
    Properties properties = new Properties();
    properties.put("spring.jpa.hibernate.ddl-auto", props.getHibernateJPAAutoConfig());
    if (props.getDatabaseName().equals(ProjectConstants.DATABASE_POSTGRE)) {
        properties.put("spring.jpa.properties.hibernate.dialect", "org.hibernate.dialect.PostgreSQL9Dialect");
        properties.put("spring.jpa.properties.hibernate.jdbc.use_get_generated_keys", true);
        properties.put("spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults", false); //started using those properties because I read that it could make postgresql connections faster; however it did not work.

    }
    return properties;
}

public EntityManagerFactory entityManagerFactory() {
    LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
    factory.setDataSource(dataSource());
    factory.setJpaProperties(hibernateProperties());
    ...
    }

0 个答案:

没有答案