sybase数据库批量写库优化

在大批量数据同时处理数据的过程当中,总是感觉到数据库资源的有限性,系统的瓶颈总是会在数据库的性能上体现,由于系统地体系结构改变需要大量的改动,领导暂时不考虑系统框架的改动,所以只能在数据库上斤斤计较。
目前我们的系统单表记录每天在500万到1000万之间,系统在sybase下只有一台服务器,在oracle下是rac的双机,采用jdbc进行数据的批量处理,在oracle下采用的是merge方法对数据进行处理,因为存在大量数据的更新,这是系统特色所决定的。在sybase下写库的性能总是很慢,采用的先批量update,再将更新失败的批量insert,但是性能一直没有得到太大的提高,最近同sybase的人员进行了多次沟通之后,发现sybase还是有些参数可以设置的,在sybase15.5之前需要将数据库联接的DYNAMIC_PREPARE该属性打开,设置成true,性能基本上会有5到10倍的提高,如果是数据源的配置的话可以是:
SybConnectionPoolDataSource sybDataSource = new SybConnectionPoolDataSource();
sybDataSource.setServerName(serverName);
sybDataSource.setDatabaseName(dataBaseName);
sybDataSource.setPortNumber(portNumber);
sybDataSource.setUser(user);
sybDataSource.setPassword(password);
sybDataSource.setCHARSET(charSet);
sybDataSource.setDYNAMIC_PREPARE("true");
dataSource = sybDataSource;
如果是单个连接的话可以是:
String decPasswd = "";

String urls = "";
Properties info = new Properties();
Connection dbConnection;
info.put("user","sa");
info.put("password","");
info.put("DYNAMIC_PREPARE", "true");
Class.forName("com.sybase.jdbc4.jdbc.SybDriver").newInstance();
urls = "jdbc:sybase:Tds:liangq-mobile:5000/maindb";
dbConnection = DriverManager.getConnection(urls, info);
return dbConnection;
通过上面的设置之后发现性能却是提高很多。
对于sybase15.5及以上的版本,是采用了jconn4,里面还有个属性是ENABLE_BULK_LOAD,对于批量插入的提高性能非常明显,大概可以提高20倍。
sybase用的人比较少,在这里只对sybase的批量写库进行一个简单的介绍。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值