Oracle10g、Db2v9.5、SqlServer2000性能对比(用数据说话)1.后台调用存储过程性能对比表:动作Oracle(ms)Db2(ms)Sqlserver(ms)Dowhile_i(10000)281ms156ms2000msDowhile_i_commit(10000)734ms4400ms4000msDowhile_u(10000)5641ms27389ms61000msDowhile_u_commit(10000)6125ms46654ms74000msDowhile_d(10000)3578ms19014ms91000msDowhile_d_commit(10000)4032ms45482ms69000ms结论:后台做插入操作db2性能最高、更新和删除操作oracle性能最高,做批量提交与每条提交一次相比,oracle性能相差不大,但db2、sqlserver性能相差比较大(除sqlserver删除的性能有所下降外)。2.前台java调用sql语句性能对比表:结论:1.java向oracle,db2,sqlserver插入10000行数据后提交数据,与每插入1行数据提交一次的性能对比,oracle性能最少提高3倍、db2性能最少提高6倍,sqlserver性能最少提高5倍,如果批量处理与批量提交对比,oracle性能最少提高25倍,db2性能最少提高25倍,sqlserver性能提高很小。2.java向oracle,db2,sqlserver插入10000行数据后提交数据,与每插入1行数据提交一次的性能对比,oracle的性能最高。oracleDb2sqlserver时间(ms)带宽(100Mb)时间带宽(100Mb)时间带宽(100Mb)Insert(10000)6452ms3%7140ms4%7921ms3%Insert_commit(10000)174143ms0.12%49856ms0.9%45825ms0.65%Insert_batch(10000)250ms0.8%281ms2%7140ms3%update(10000)12405ms1%40528ms0.65%61402ms0.45%Update_commit(10000)171392ms0.13%27342ms1%88462ms0.3%Update_batch(10000)5859ms0.15%33154ms0.01%61573ms0.4%delete(10000)9859ms2%30029ms1%72588ms0.4%Delete_commit(10000)160364ms0.3%50216ms0.87%119976ms0.3%Delete_batch(10000)3469ms0.46%22826ms0.94%57480ms0.55%3.java向oracle,db2,sqlserver更新10000行数据后提交数据,与每更新1行数据提交一次的性能对比,oracle性能最少提高13倍、db2性能降低1.4倍,sqlserver性能最少提高1.4倍,如果批量处理与批量提交对比,oracle性能最少提高2倍,db2性能最少提高1.3倍,sqlserver性能提高有所降低。4.java向oracle,db2,sqlserver更新10000行数据后提交数据,与每更新1行数据提交一次的性能对比,oracle的性能最高5.java向oracle,db2,sqlserver删除10000行数据后提交数据,与每删除1行数据提交一次的性能对比,oracle性能最少提高16倍、db2性能降低1.6倍,sqlserver性能最少提高1.6倍,如果批量处理与批量提交对比,oracle性能最少提高2.8倍,db2性能最少提高1.3倍,sqlserver性能最少提高1.2。6.java向oracle,db2,sqlserver删除10000行数据后提交数据,与每删除1行数据提交一次的性能对比,oracle的性能最高总结:后台相对于前台性能对比如下:1.批量插入操作,oracle、db2性能差不多,sqlserver有所提高。2.批量更新操作,oracle、db2,sqlserver性能差不多。3.批量删除操作,oracle、db2性能差不多,sqlserver有所下降4.批量提交插入操作,oracle、db2,sqlserver性能提高较大5.批量提交操作,oracle、db2性能提高较大,sqlserver性能差不多。6.批量提交操作,oracle、db2性能提高较大,sqlserver有所下降从对比来看后台与前台批量操作性能差不多,但后台与前台批量提交相比oracle,db2性能都有较大的提高,而sqlserver反而有所下降。脚本:1.做批量插入1.oracle:createtabletest(aint,bchar(10));CREATEORREPLACEPROCEDUREdowhile(in_countint)asv1INT;BEGINv1:=in_count;WHILEv1>0loopinsertintotestvalues(v1,'abcd');v1:=v1-1;--commit;ENDloop;END;CREATEORREPLACEPROCEDUREdowhile_commit(in_countint)asv1INT;BEGINv1:=in_count;WHILEv1>0loopinsertintotestvalues(v1,'abcd');v1:=v1-1;commit;ENDloop;END;Execdowhile(10000);发费时间:0.281秒Execdowhile_commit(10000);发费时间:0.734秒2.db2:createtabletest(aint,bchar(10));CREATEPROCEDUREYDGFTEST01.DOWHILE(ININ_COUNTint)LANGUAGESQLSPECIFICDOWHILEBEGINDECLAREv1int;setv1=in_count;whilev1>0doinsertintotestvalues(v1,'abcd');SETv1=v1-1;endwhile;ENDCREATEPROCEDUREYDGFTEST01.DOWHILE_COMMIT(ININ_COUNTint)LAN...