- 浏览: 1184546 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (361)
- java综合 (33)
- 项目管理 (10)
- 工作流 (6)
- spring (11)
- hibenate (17)
- struts (0)
- javascript,html,css,ajax,jquery (11)
- IDE (9)
- 生活 (0)
- 工作 (0)
- 杂记 (1)
- 数据库 (96)
- 服务器 (5)
- 可视编辑 (0)
- freemarker (6)
- 操作系统 windows (13)
- web页面 (6)
- jms (15)
- 调优 (4)
- 测试和bug管理 (2)
- 原理 (1)
- 項目-atf (17)
- 安全 (3)
- xml (4)
- 操作系统 liunx (21)
- 网络 (22)
- office (11)
- 设计 (2)
- 软件 (1)
- 数据库 mysql (6)
- 胖客户端-flex (1)
- 正则 (9)
- oracle- liunx (3)
- sql2000 (2)
- 模式 (1)
- 虚拟机 (2)
- jstl (2)
- 版本控制 打包工具 (0)
- AOP (1)
- demo (1)
- 小软件 (2)
- 感恩 (1)
- iphone 4 (1)
- 反欺诈业务经验整理 (0)
最新评论
-
sea0108:
mark
java内存模型 -
XingShiYiShi:
方便把:testPNR();具体实现发出来吗?谢谢
用正则表达式解析 航信的电子客票和pnr报文 -
wh359126613:
如果js和webservice不在同一个服务器上,有跨域问题如 ...
使用javascript调用webservice示例 -
雨飛雁舞:
...
oracle 动态性能(V$)视图 -
ouyang1224:
好东西
oracle 动态性能(V$)视图
测试特定配置下oracle日志批量提交的最优数量
一、测试背景
项目中的记录日志有时会采用批量提交的方法,它的好处是减少了获取数据连接的次数,从而减少了网络交互的次数,提高了系统性能。为了将系统性能提高到最好,找到特定配置下oracle批量提交的最优数量,进行了这个测试。
二、测试环境与配置(数据库服务器配置)
操作系统:aix 5.3
数据库版本:oracle 10g
Java版本:1.5
Web应用服务器:weblogic
三、测试设计
1. 如何进行批量提交
可能有人对我上面提到的批量提交的实现方式不清楚,在此详细介绍一下,用到的是preparedStatement的addBatch()和executeBatch()方法。addBatch()方法将一组参数添加到preparedStatement 对象的批处理命令中,通过调用方法 executeBatch 可以批量执行此列表中的命令。
程序如下例:
public static void test(){
......
preparedStatement ps = null;
try {
conn = DataSourceManager.instance().getConnection();
ps = conn.prepareStatement("insert into log(col1,col2)values(?,?)");
for (int i = 0; i < commitCount; i++) {
ps.setString(1, "hello");
ps.setString(2, "123");
ps.addBatch();
}
ps.executeBatch();
......
}
2.设计思路
测试要得到的就是程序中一次批量提交的日志最优条数,也就是commitCount的值。
拿到这个测试项目时,我的思路是:设定批量提交日志参数commitCount的值,在一段可计算的时间time 内提交日志数count,得到每秒提交的日志条数v(v=提交的日志数count/时间time)。逐渐增加批量日志参数commitCount,得到不同的v,对比数据,取最大的v所对应的commitCount,即为批量提交的最优数量。
3. 程序设计
思路比较容易确定,剩下就是程序的设计了。设计程序的原则是可操作性要高,主要问题是思路中提到的各个参数的设置和获取。在经验丰富的前辈的指点下,对程序进行了设计,在此不再赘述具体代码,只将程序设计思路简单介绍一下:
a.commitCount的设置
在测试页面设置输入框,将此值作为参数输入。
b.time的获取
在提交日志之前和之后分别取系统时间,作差即得提交日志所用时间time
c.count的设置
为忽略批量提交日志每次获取数据连接所用的时间,设置提交次数views,并在程序中将获取数据连接的代码写在提交所有日志前(注意:写在批量提交程序中每个批量提交都会建立数据连接,从而使得到的time误差较大)。这样提交一次日志只获取一次数据连接。所以提交次数越大,得到的time就越接近提交日志所用的时间,可忽略获取连接所用时间。
所以在页面设置"提交次数"输入框views,程序中设计一个循环来模拟多次批量提交日志,并计算count=commitCount*views
程序计算v=count/time 的值,显示到页面。
另外注意:插入数据时,数据表原有数据条数对插入数据的速度也会有影响。为保证每次插入日志时数据表环境一致,在每次插入日志之后要删除本次插入的日志。
四、测试执行情况和测试结果
程序写好部署后,万事俱备,可以进行测试了(注意:最好找网络稳定的时间进行测试,得出的测试结果误差较小)。
在页面输入“批量提交日志参数”commitCount和“提交次数”views,并记录返回到页面的v值。
“提交次数”设为50,人为设定“批量提交日志参数”commitCount,从100开始,一次增加20,到200,发现v的值一直增大,之后将commitCount分别以100、200等幅度向上增加,直到5000。发现commitCount=500时,v值最大。
为排除网络原因,每组数据测试两次。具体测试数据形成了折线图,如下图:
所以在以上描述的特定测试环境下,oracle 日志批量提交的最优数量是500 条。
以上就是测试的全过程,或许有人有更好的测试方法,以期共享。
发表评论
-
并发行级锁超2秒报警监控sql
2010-07-20 16:18 1875并发行级锁超2秒报警监控sql -
数据设计规范v
2010-06-22 19:47 0数据设计规范v -
Oracle 有趣排序包括那些
2010-06-20 16:51 1399按拼音排序 select * from table ... -
Oracle sql 性能优化调整
2010-06-20 16:15 1362Oracle sql ... -
Delete、Drop、Truncate的比较(转)
2010-05-31 13:39 1442Delete、Drop、Truncate的比较 关键字: d ... -
Oracle误操作解决方案(转)
2010-05-31 13:35 1362Oracle误操作解决方案 文章分类:数据库 一.误删除数 ... -
一个递归调用的存储过程
2010-04-19 01:51 1806一个递归调用的存储过程 -
oracle index学习总结
2009-12-08 10:44 19582oracle index 1.index需要储存空间 ... -
Jdbc 和hibernate
2009-11-16 23:38 1837Jdbc 和hibernate 一、Jdbc是java ... -
去掉 powerDesigner 中表设计时的 name和code联动的功能
2009-11-16 17:04 3444去掉 powerDesigner 中表设计时的 name和co ... -
oracle数据库索引未被使用的问题及其解决2007
2009-11-15 01:42 2103一次,在进行WEB页面上进行历史数据文件检查时,发现数据库访问 ... -
RMAN配置及备份与恢复练习
2009-09-27 18:06 16021.创建表空间SQL>create tablespace ... -
误删除数据后怎么立即恢复(不考虑全库备份和利用归档日志)
2009-09-27 18:01 3354要达到删除数据,有以下几种方式都可以:1、delete2、dr ... -
IMP数据到指定的表空间
2009-09-27 12:47 9066IMP数据到指定的表空间 一直以来,我都认为只要指定用户的默 ... -
ORACLE UPDATE 语句语法与性能分析
2009-09-27 09:49 1847为了方便起见,建立了以下简单模型,和构造了部分测试数据: 在 ... -
oracle job 例子
2009-09-22 12:38 3038一、设置初始化参 ... -
oracle 时间加减综合
2009-09-17 11:43 1962加法 select sysdate,add_mon ... -
详细介绍ORACLE sqlplus命令
2009-09-09 16:42 2022一、ORACLE的启动和关闭1、在单机环境下要想启动或关闭OR ... -
AWR介绍与SYSAUX空间关系 SYASAUX表空间满了 系统慢
2009-09-08 09:45 7847AWR介绍与SYSAUX空间关系 2007-11-05 14 ... -
to_char 'NLS_DATE_LANGUAG参数
2009-09-02 18:41 1440select to_char(sysdate, 'Day'), ...
相关推荐
oracle 存储过程批量提交
关于ORACLE批量提交数据的SQL脚本,可以根据实际情况改变!
HP刀片——Oracle网格计算的最优平台.pdf
HP刀片:Oracle网格计算的最优平台.pdf
ORACLE批量更新四种方法.txt ORACLE批量更新四种方法.txtORACLE批量更新四种方法.txt ORACLE批量更新四种方法.txt
springboot项目在Oracle下测试批量添加和批量删除,使用spring boot构建的项目,数据库配置的时oracle,想换成MySQL自己把配置文件中的MySQL链接注释去掉即可。项目测试了Oracle下添加,删除数据,批量添加和批量删除...
利用.net 语言编程实现对Oracle数据的批量的导入功能
该文件提供了oracle日志文件的分析方法,能够从日志中追查相关操作,并进行恢复工作。
oracle批量跟新数据脚本,oracle批量跟新数据脚本,oracle批量跟新数据脚本。
Linux环境下使用sqlplus工具将oracle中的数据导入到elasticsearch中。只需要在es_bulk_tool.properties配置sql即可实现数据的批量导入。在elasticsearch6中测试通过。shell脚本需要使用sqlplus。
kettle快速加载到oracle之oracle批量加载-Oracle Bulk Loader
使用Jmeter测试Oracle,如何配置Jmeter测试计划,进行Oracle连接数测试
数据库做数据库开发或管理的人经常要创建大量的测试数据,动不动就需要上万条,如果一条一条的录入,那会浪费大量的时间,本文介绍了Oracle中如何通过一条 SQL快速生成大量的测试数据的方法。 产生测试数据的SQL如下...
用java写的一个oracle日志查看器源代码,调用oracle数据库的logminer过程。包含一个不错的日历选择面板
在oracle数据据库中批量插入数据的java方法
oracle数据库日志查看方法,排查错误。
Oracle中删除超过50w条记录的数据,如果直接使用更新会造成资源溢出锁表等问题,需要批量提交。
oracle批量生成数据脚本,oracle批量生成数据脚本,oracle批量生成数据脚本,oracle批量生成数据脚本。
收集了一些Oracle日志文件介绍,详细的介绍了如何操作Oracle的日志文件,很有实用价值
获取远程oracle日志步骤.查询oracle错误日志步骤及原因。