Java 使用连接池压缩MySQL流量
我正在尝试使用Commons Pool和DBCP实现连接池。我能够建立到数据库的连接,除了流量压缩之外,一切都正常工作Java 使用连接池压缩MySQL流量,java,mysql,jdbc,compression,connection-pooling,Java,Mysql,Jdbc,Compression,Connection Pooling,我正在尝试使用Commons Pool和DBCP实现连接池。我能够建立到数据库的连接,除了流量压缩之外,一切都正常工作 这是我的配置: -Commons DBCP 1.4 -共用池1.6 -MySQL连接器Java 5.1.21 -Windows Server 2008上的MySQL Server 5.5 -Java 1.6 请考虑此代码片段实例化连接池: private void setupDataSource(Hashtable<String, String> data) {
这是我的配置:
-Commons DBCP 1.4
-共用池1.6
-MySQL连接器Java 5.1.21
-Windows Server 2008上的MySQL Server 5.5
-Java 1.6
请考虑此代码片段实例化连接池:
private void setupDataSource(Hashtable<String, String> data) {
try
{
GenericObjectPool<Connection> pool = new GenericObjectPool<Connection>();
pool.setMinIdle(5);
pool.setMaxActive(-1);
pool.setTestOnBorrow(true);
pool.setTimeBetweenEvictionRunsMillis(5000);
pool.setMinEvictableIdleTimeMillis(300000);
Properties props = new Properties();
props.setProperty("user", "root");
props.setProperty("password", "password");
props.setProperty("useCompression", "true");
ConnectionFactory cf = new DriverConnectionFactory(new com.mysql.jdbc.Driver(),
"jdbc:mysql://" + ip + ":" + port,
props);
KeyedObjectPoolFactory<String, GenericObjectPool<Connection>> kopf =new GenericKeyedObjectPoolFactory<String, GenericObjectPool<Connection>>(null, 20, GenericObjectPool.WHEN_EXHAUSTED_GROW, 20, true, false);
PoolableConnectionFactory pcf = new PoolableConnectionFactory(cf,
pool,
kopf,
"Select 1;",
false,
true);
PoolingDriver pd = new PoolingDriver();
pd.registerPool("MyPool", pool);
}catch (Exception ex)
{
ex.printStackTrace();
}
}
首先,除了比较MSQL工具中的传出网络流量外,是否还有其他方法检查压缩是否有效
为了实现压缩,需要更改哪些内容
谢谢你的帮助
klib现在,在将近一年之后,我测试了最新的连接器/J(5.1.25),问题不再出现。因为我没有改变任何东西,所以看起来连接器5.1.21有点问题。
顺便说一句,发行说明中没有真正的错误修复,它们只是“改进了压缩行为”。经过一些研究,我发现问题很可能不是连接池,而是MySQL连接器。使用连接器版本5.1.6时,压缩工作正常。你知道为什么最新的连接器不能按预期工作吗?
Connection conn = java.sql.DriverManager.getConnection("jdbc:apache:commons:dbcp:MyPool");