main
黄海 2 years ago
parent 42d8e84b1c
commit 6882329833

@ -0,0 +1,77 @@
package UnitTest;
import com.alibaba.druid.filter.stat.StatFilter;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Record;
import com.jfinal.plugin.activerecord.dialect.PostgreSqlDialect;
import com.jfinal.plugin.druid.DruidPlugin;
import java.util.ArrayList;
import java.util.List;
import static com.dsideal.FengHuang.Const.DbConst.MASTER;
import static com.dsideal.FengHuang.Const.DbConst.SLAVE;
public class MysqlReadWriteSplit {
public static DruidPlugin createDruidPlugin(String url, String username, String password, String driverClass) {
DruidPlugin druidPlugin = new DruidPlugin(url, username, password, driverClass);
//最大连接池数量
druidPlugin.setMaxActive(20);
//最小连接池数量
druidPlugin.setMinIdle(1);
//初始化时建立物理连接的个数默认为0
druidPlugin.setInitialSize(1);
//获取连接时最大等待时间单位毫秒。配置了maxWait之后缺省启用公平锁并发效率会有所下降如果需要可以通过配置useUnfairLock属性为true使用非公平锁。
druidPlugin.setMaxWait(60000);
//如果连接空闲时间大于等于minEvictableIdleTimeMillis则关闭物理连接。
druidPlugin.setTimeBetweenEvictionRunsMillis(60000);
//连接保持空闲而不被驱逐的最小时间
druidPlugin.setMinEvictableIdleTimeMillis(300000);
//建议配置为true不影响性能并且保证安全性。申请连接的时候检测如果空闲时间大于timeBetweenEvictionRunsMillis执行validationQuery检测连接是否有效。
druidPlugin.setTestWhileIdle(true);
//申请连接时执行validationQuery检测连接是否有效做了这个配置会降低性能。默认为true
druidPlugin.setTestOnBorrow(false);
//归还连接时执行validationQuery检测连接是否有效做了这个配置会降低性能。默认为true
druidPlugin.setTestOnReturn(false);
//数据监控
druidPlugin.addFilter(new StatFilter());
return druidPlugin;
}
public static void main(String[] args) {
String masterUrl = "jdbc:mysql://10.10.14.209:22066/test_db?rewriteBatchedStatements=true&useUnicode=true&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai";
String driverClass = "com.mysql.cj.jdbc.Driver";
String userName = "root";
String passWord = "DsideaL147258369";
DruidPlugin druidMaster = createDruidPlugin(masterUrl, userName, passWord, driverClass);
druidMaster.start();
ActiveRecordPlugin arpMaster = new ActiveRecordPlugin(MASTER, druidMaster);
arpMaster.setDevMode(false);
arpMaster.setDialect(new PostgreSqlDialect());
arpMaster.start();
String sql = "truncate table test";
Db.use(MASTER).update(sql);
long start = System.currentTimeMillis();
List<String> list=new ArrayList<>();
for (int i = 1; i <= 100000; i++) {
sql = "insert into test(id,txt) values("+i+",'黄海')";
list.add(sql);
}
Db.batch(list,2000);
long end = System.currentTimeMillis();
long elapsed = end - start;
System.out.println("程序耗时:" + elapsed + " 毫秒");
//sql = "select * from test where id=?";
//List<Record> list2 = Db.use(SLAVE).find(sql, 100000);
//System.out.println(list2);
}
}

@ -8,6 +8,7 @@ import com.jfinal.plugin.activerecord.Record;
import com.jfinal.plugin.activerecord.dialect.PostgreSqlDialect;
import com.jfinal.plugin.druid.DruidPlugin;
import java.util.ArrayList;
import java.util.List;
import static com.dsideal.FengHuang.Const.DbConst.MASTER;
@ -65,26 +66,22 @@ public class OpenGaussReadWriteSplit {
String sql = "truncate table test";
Db.use(MASTER).update(sql);
for (int i = 1; i <= 100; i++) {
sql = "insert into test(id,txt) values(?,?)";
Db.use(MASTER).update(sql, i, "黄海——" + i);
}
long start = System.currentTimeMillis();
for (int i = 1; i <= 100; i++) {
sql = "update test set txt='ddd' where id=?";
Db.use(MASTER).update(sql, i);
List<String> list=new ArrayList<>();
for (int i = 1; i <= 100000; i++) {
sql = "insert into test(id,txt) values("+i+",'黄海')";
list.add(sql);
}
Db.batch(list,2000);
long end = System.currentTimeMillis();
long elapsed = end - start;
System.out.println("程序耗时:" + elapsed + " 毫秒");
for (int i = 1; i <= 100; i++) {
sql = "select * from test where id=?";
List<Record> list = Db.use(SLAVE).find(sql, i);
System.out.println(list);
}
sql = "select * from test where id=?";
List<Record> list2 = Db.use(SLAVE).find(sql, 100000);
System.out.println(list2);
for (int i = 1; i <= 100; i++) {
sql = "delete from test where id=?";
Db.use(MASTER).update(sql, i);
}
}
}
Loading…
Cancel
Save