GBase8s jdbc批量插入数据的正确方法

142 篇文章 0 订阅
7 篇文章 0 订阅

GBase9s jdbc实现了标准的批量插入接口,与其他数据库厂商使用方式一致,降低了使用成本。再次基础上还新增了一个url参数用于提升批量插入性能,通过开启该参数在网络友好的情况下通过降低交互次数提升性能。首先介绍参数如下:
IFX_USEPUT=1:开启性能优化,提升插入性能
IFX_USEPUT=0:默认值,不开启优化。
下面结合测试用例讲解批量插入的标准方式。
1、用例如下:
public static void main(String[] args) throws Exception {

String url = “jdbc:gbasedbt-sqli://localhost:19088/zhtest:GBASEDBTSERVER=gbase01;DB_LOCALE=zh_CN.utf8;CLIENT_LOCALE=zh_CN.utf8;IFX_USEPUT=1;” +
“PROTOCOLTRACE=5;PROTOCOLTRACEFILE=./trace.log”
;
String username = “gbasedbt”;
String password = “GBase123”;
Class.forName(“com.gbasedbt.jdbc.Driver”);
Connection conn = DriverManager.getConnection(url,username,password);
select(conn);
conn.close();
}

private static void select(Connection conn) throws SQLException {
conn.createStatement().execute(“truncate table test1”);

PreparedStatement pst = conn.prepareStatement("insert into test1 (col1,col2) values(?,?)");
System.out.println("begin");
long a = System.currentTimeMillis();
for(int i=0;i<10;i++){
    for(int j=0;j<10000;j++){
        pst.setInt(1,j);
        pst.setString(2,"test");
        pst.addBatch();
    }
    pst.executeBatch();
    pst.clearBatch();
}
long b = System.currentTimeMillis();
System.out.println((b-a)/1000);
System.out.println("end");
pst.close();

}

2、执行结果如下:
在这里插入图片描述

3、总结
本人测试用数据库是虚拟机搭建,硬件资源水平比较差。针对IFX_USEPUT开启情况下多次运行,10万条数据插入时间稳定在20s左右。同时本人尝试将IFX_USEPUT设置为0,测试查看运行结果及其缓慢,等了几分钟并没结束,从后台查看数据库的量发现每秒仅有几条数据插入,针对IFX_USEPUT=0的测试结果就不贴在此了。故建议做批量插入时将该参数设置为1.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值