java - MySQL通过连接池进行流量压缩

标签 java mysql jdbc compression connection-pooling

我正在尝试使用 Commons Pool 和 DBCP 来实现连接池。我能够建立与数据库的连接,除了流量压缩之外,一切都按预期工作。
这是我的配置:
- 公共(public) DBCP 1.4
- 公共(public)池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();
    }
}

然后,为了获得我使用的连接:

Connection conn = java.sql.DriverManager.getConnection("jdbc:apache:commons:dbcp:MyPool");

首先,除了比较 MSQL Tools 中的传出网络流量之外,是否还有其他方法来检查压缩是否有效?

需要更改什么才能启用压缩?

感谢您的帮助

klib

最佳答案

现在,经过近一年的时间,我测试了最新的 Connector/J (5.1.25),问题不再出现。由于我没有更改任何内容,看起来连接器 5.1.21 有点问题。 顺便说一句,发行说明中没有真正的错误修复,它们只是“改进了压缩行为”。

关于java - MySQL通过连接池进行流量压缩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11429396/

相关文章:

java - PMD/Checkstyle - 在注释值中强制使用常量

java - Selenium Webdriver 继续通过多个类

java - Servlet DispatcherServlet 的 Servlet.init() 抛出异常

java - 在java中将一个jpg文件添加到mysql数据库

mysql - 使用多个查询创建多列计数器的复杂查询

java - JDBC:socketTimeout 和 networkTimeout 的区别

java - 如何解决无法连接到/192.168.15.186(端口80): connect failed: ETIMEDOUT (Connection timed out) in Windows Firewall

java - 我应该在 Android 中的哪里保存文件以供本地访问?

mysql - 因为我无法更新与 mysql 上的触发器关联的表?

mysql - spring boot mysql JSON请求