我目前正在使用以下libs / frameworks开发一个项目:
该项目应该在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());
...
}