ブロガーがflink統合接続プールを使用する前は、常に誤解がありました。これは、プログラムによるリソースの作成を減らすことです。すべてのロードリソースまたは接続の取得は、リソースの使用を減らすことができますが、flinkのopenメソッドに配置されます。 。ほとんどのシナリオに対応できますが、たとえば、mysql接続が長期間使用されない場合、接続はmysqlデータベース自体によって再利用されます。
Druidについて簡単に紹介
します。DRUIDはAlibabaのオープンソースプラットフォームでのデータベース接続プールの実装です。C3P0、DBCP、PROXOOL、その他のDBプールの利点を組み合わせ、ログ監視を追加して、DBプール接続とSQLを適切に監視できます。実装は監視用のDB接続プールと言えます(現時点で最良の接続プールと言われていますが、速度がBoneCPより速いかどうかはわかりません)。
構成パラメーター
DRUIDのDataSourceクラスは、他の接続プールと同じです:com.alibaba.druid.pool.DruidDataSource。基本的な構成パラメーターは次のとおりです。
私の使用:
@Override
public void open(Configuration parameters) throws Exception {
dataSource = new DruidDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("****");
dataSource.setUsername("***");
dataSource.setPassword("****");
dataSource.setInitialSize(10); //初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时
dataSource.setMinIdle(10); //最小连接池数量
dataSource.setMaxActive(20); //最大连接池数量
dataSource.setMaxWait(1000 * 20); //获取连接时最大等待时间,单位毫秒。配置了maxWait之后,缺省启用公平锁,并发效率会有所下降,如果需要可以通过配置useUnfairLock属性为true使用非公平锁。
dataSource.setTimeBetweenEvictionRunsMillis(1000 * 60); //有两个含义:1) Destroy线程会检测连接的间隔时间2) testWhileIdle的判断依据,详细看testWhileIdle属性的说明
dataSource.setMaxEvictableIdleTimeMillis(1000 * 60 * 60 * 10); //<!-- 配置一个连接在池中最大生存的时间,单位是毫秒 -->
dataSource.setMinEvictableIdleTimeMillis(1000 * 60 * 60 * 9); //<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
dataSource.setTestWhileIdle(true); // <!-- 这里建议配置为TRUE,防止取到的连接不可用 -->
dataSource.setTestOnBorrow(true);
dataSource.setTestOnReturn(false);
dataSource.setValidationQuery("select 1");
}
flinkのopenメソッドで接続プールを作成し、使用時にgetConnectionを介して接続を取得します。使用後、.closeメソッドを呼び出して接続を接続プールに戻します。