在大批量数据同时处理数据的过程当中,总是感觉到数据库资源的有限性,系统的瓶颈总是会在数据库的性能上体现,由于系统地体系结构改变需要大量的改动,领导暂时不考虑系统框架的改动,所以只能在数据库上斤斤计较。
目前我们的系统单表记录每天在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的批量写库进行一个简单的介绍。
目前我们的系统单表记录每天在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的批量写库进行一个简单的介绍。