您的位置:首页 > 其它

JDBC的效率问题研究和总结

2010-06-29 19:35 218 查看
JDBC的效率问题

1. 使用OCI比thin方式要好,但是前者是需要专有驱动程序的。

2. 语句结构一致的情况下,使用事先构造语句,这样会让oracle执行一个计划。

3. 链接过多的时候,使用连接池,这样利用oracle创建一个真链接比利用连接池创建一个假链接消耗资源要大多了。连接池的链接都呆在那里

4. 关于自动提交和禁止提交的问题。前者比后者要快3倍。

5. 关于批处理的问题,批处理是要快10倍,注意批处理和一个计划不是同一件事情。注意其中间包含5--30个句子是最优化的。但是这个批处理的异常是不确定的,难以说明这个处理异常返回的结果是批处理哪条语句造成的批处理的结果。例子如下:

myprepstatement=myconnection.preparestatement("insert into table"+"(vable) vables (?)");

//一个计划

For(int count=0;count<total_num;count++){

Myprepstatement.setInt(1,count);

Myprepstatement.execute();

}

//一个批处理

Count2=0;

For(int count=0;count<total_num;count++){

Myprepstatement.setInt(1,count);

Myprepstatement.addbatch();

}

Myprepstatement.execute();

6. ORACLE的批处理比标准JDBC的批处理更加快

7. 结果集的行数的获取的设置。设置越大,性能越好,但是程序占用内存很大。

8. 使用语句缓存;如果是隐式的缓存,则preparestatement对象必须一样,语句也必须一样,且statement不支持,也可以禁止隐式的缓存,而只处理自己需要缓存的语句;

连接池如何用?升级后是否兼容?------用jboss自带的连接池

语句缓存是否可以用到标准jdbc?------应该是可以

批处理的异常问题有没有解决的方法???-----没有看到,那位大拿有办法,联系我jjduys@163.com. 谢谢

实验:

批处理和计划处理的效率?

批处理的异常问题,也就是update为0的问题,这个是否有异常??如果没有,结果是什么-----没有异常

statment的批处理和preststment的计划处理二者的效率比较

Preststment 计划 和statment的批量处理,其更新的表中有6万条记录,无索引。基本和一个6万小区的表相同。更新的记录都是4000条,基本和一个omm的小区数相同,记录的时间是数据库执行的时间,其中程序运行的数据处理时间采取直接赋值的办法,可以认为没有时间开销。

自动提交是只是否批量提交。测试用的数据库是sun440上安装的oracle。

属性名 中文名称 说明 类型和取值说明 限定

preststment 计划 1*4000 非自动提交 139532ms

Preststment 计划 1*4000 自动提交 115584ms

Preststment 计划 4*1000 非自动提交

Preststment 计划 4*1000 自动提交 114835ms

Preststment 计划 100*40 非自动提交

Preststment 计划 100*40 自动提交 116943ms

statment 批处理 1*4000 非自动提交 180773ms

statment 批处理 1*4000 自动提交 156122ms

statment 批处理 4*1000 非自动提交

statment 批处理 4*1000 自动提交

statment 批处理 100*40 非自动提交

statment 批处理 100*40 自动提交 152389ms

delAndCreate 计划,批处理 1*4000 删除提交一次;插入自动提交一次 delete time 1846ms insert time 3614ms

delAndCreate 计划,批处理 1*4000 全部时间提交一次 delete time 1266ms insert time 6925ms

delAndCreate 计划,批处理 100*40 全部时间提交一次 delete time 282ms insert time 4219ms

delete time 1875ms insert time 5954ms

delete time 1500ms insert time 453ms commit time 1485ms

delAndCreate 计划,批处理 200*20 全部时间提交一次 delete time 281ms,insert time 9533ms

delAndCreate 计划,批处理 40*100 全部时间提交一次 delete time 1641ms,insert time 2172ms

delete time 312ms,insert time 8110ms

delete time 328ms,insert time 4923ms

delAndCreate 计划,批处理 20*200 全部时间提交一次 delete time 5437ms,insert time 3298ms
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: