1
我有一个用例,我使用memcache来缓存来自数据库的某些结果。我使用查询本身作为键,值将是CachedRowSetImpl
类型的序列化结果集。为了形成查询,我需要使用PreparedStatement
,而这又需要连接对象到数据库。这超出了缓存的全部目的,因为超过一半的时间用于建立连接。有没有解决这个问题的方法?还是必须使用其他方法来缓存结果?在java中准备语句
我有一个用例,我使用memcache来缓存来自数据库的某些结果。我使用查询本身作为键,值将是CachedRowSetImpl
类型的序列化结果集。为了形成查询,我需要使用PreparedStatement
,而这又需要连接对象到数据库。这超出了缓存的全部目的,因为超过一半的时间用于建立连接。有没有解决这个问题的方法?还是必须使用其他方法来缓存结果?在java中准备语句
为避免每次都建立连接,请使用连接池,如c3p0。您可以配置一个连接池当你需要一个JDBC连接,只需要用就用Postgres的,用户名swaldman和passwordComboPooledDataSource
// in constructor
cpds = new ComboPooledDataSource();
cpds.setDriverClass("org.postgresql.Driver"); //loads the jdbc driver
cpds.setJdbcUrl("jdbc:postgresql://localhost/testdb");
cpds.setUser("swaldman");
cpds.setPassword("test-password");
:
Connection connection = cpds.getConnection();
还有其他的连接池,如DBCP,其中设置以类似的方式。
如何通过连接池或手动创建连接来获取连接? – 2013-04-11 13:00:04
手动创建 – coder 2013-04-11 13:02:13
好吧,现在您已经发现打开连接缓慢的罪魁祸首。 – 2013-04-11 13:03:14