【问题标题】:JDBC connection pool to multiple MySQL databases on the same server (with the same user and password)同一服务器上多个 MySQL 数据库的 JDBC 连接池(使用相同的用户和密码)
【发布时间】:2013-04-26 14:58:45
【问题描述】:

我有多个网站(大约 200 个)由同一个 Java Web 应用程序托管。每个站点都有自己的 MySQL 数据库。数据库都在同一个 MySQL 服务器上,并且都使用相同的用户名和密码进行访问。

由于我实现池的方式,我目前正在用完数据库连接。我为每个站点的数据库使用 C3P0 ComboPooledDataSource。这会创建数百个与数据库服务器的连接,而数据库服务器似乎无法处理它。

是否有一种池机制可以创建一个数据库连接池,可用于单个数据库服务器上托管的所有数据库?

【问题讨论】:

    标签: java mysql jdbc c3p0 pool


    【解决方案1】:

    我发现我可以为第一个数据库创建一个 ComboPooledDataSource。然后,当我从数据库池获得连接时,我可以在连接上调用setCatalog(name),以使用C3P0 数据池在同一台服务器上使用任何其他数据库。

    ComboPooledDataSource cpds = new ComboPooledDataSource();
    cpds.setDriverClass("com.mysql.jdbc.Driver");
    cpds.setJdbcUrl("jdbc:mysql://localhost:3306/site_a");
    cpds.setUser(user);
    cpds.setPassword(pass);
    ....
    Connection conn = getPool().getConnection();
    conn.setCatalog("site_b");
    ...
    

    编辑:写这篇文章后,我切换到ProxoolsetCatalog 的相同技术适用于它,但创建连接的语法不同:

    try {
        Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");
    } catch (ClassNotFoundException e) {
        throw new RuntimeException(e);
    }
    Properties info = new Properties();
    info.setProperty("proxool.maximum-connection-count", "20");
    info.setProperty("proxool.house-keeping-test-sql", " select CURDATE()");
    info.setProperty("user", user);
    info.setProperty("password", pass);
    info.setProperty("proxool.alias", "mypoolname");
    info.setProperty("proxool.url", "jdbc:mysql://localhost:3306/site_a");
    info.setProperty("proxool.driver", "com.mysql.jdbc.Driver");
    String url = "proxool.mypoolname";
    ProxoolDatabasePool pool = new ProxoolDatabasePool(url, info);
    ....
    Connection conn = pool.getConnection();
    conn.setCatalog("site_b");
    ...
    

    【讨论】:

    • 嘿,ComboPooledDataSource 类是第三方库还是...?
    • 感谢。会查的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-15
    • 2020-07-07
    • 2017-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多