查看启动日志,发现数据源初始化时,postgresql数据源特别慢,耗时30秒~2分钟,Debug发现慢在loadDefaultTables方法。
Mysql数据源,getAllTableNames()无返回值,而postgresql数据源返回了200多个表名,随着表的增加,postgresql数据源的初始化将会越来越慢。
由于项目只访问postgresql中的几个分表,可考虑只加载分表,不加载其他表,即不进入下面这段代码:
if (actualDefaultDataSourceName.isPresent()) {
Iterator var4 = this.getAllTableNames((String)actualDefaultDataSourceName.get()).iterator();while(var4.hasNext()) {
String each = (String)var4.next();
result.put(each, this.tableMetaDataLoader.load(each, shardingRule));
}
}
故考虑重写ShardingRule的findActualDefaultDataSourceName()方法,使返回值不是Present。
重写代码如下:
p