`

测试特定配置下oracle日志批量提交的最优数量

阅读更多

测试特定配置下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 条。

以上就是测试的全过程,或许有人有更好的测试方法,以期共享。

 

  • 大小: 86.3 KB
分享到:
评论

相关推荐

    oracle 存储过程批量提交

    ### Oracle存储过程批量提交知识点详解 在Oracle数据库中,存储过程是一种重要的数据库对象,它可以包含一系列SQL语句和控制流语句,用于实现复杂的业务逻辑处理。存储过程不仅可以提高应用程序性能,还可以确保...

    oracle-批量提交脚本

    关于ORACLE批量提交数据的SQL脚本,可以根据实际情况改变!

    springboot项目在Oracle下测试批量添加和批量删除

    springboot项目在Oracle下测试批量添加和批量删除,使用spring boot构建的项目,数据库配置的时oracle,想换成MySQL自己把配置文件中的MySQL链接注释去掉即可。项目测试了Oracle下添加,删除数据,批量添加和批量删除...

    oracle批量插入测试数据

    数据库做数据库开发或管理的人经常要创建大量的测试数据,动不动就需要上万条,如果一条一条的录入,那会浪费大量的时间,本文介绍了Oracle中如何通过一条 SQL快速生成大量的测试数据的方法。 产生测试数据的SQL如下...

    C#实现Oracle数据批量导入

    C#实现Oracle数据批量导入 在本文中,我们将讨论如何使用C#语言实现对Oracle数据库的批量数据导入功能。本文的主要内容包括如何使用Oracle.DataAccess.Client命名空间来实现批量导入功能,以及如何使用SqlBulkCopy...

    oracle数据库日志查看方法

    Trace文件是Oracle在特定条件下生成的跟踪文件,主要用于深入分析数据库性能或定位特定问题。Trace文件的位置可以通过以下命令查询: ```sql SHOW PARAMETER USER_DUMP_DEST; ``` #### 六、查看Listener日志 ...

    java代码oracle数据库批量插入

    ### Java代码实现Oracle数据库批量插入的关键知识点 #### 1. JDBC连接配置 - **JDBC URL**: `jdbc:oracle:thin:@IP:1521:orcl`,这里的URL指定了连接到Oracle数据库的方式。其中`@IP:1521:orcl`中的IP是指数据库...

    oracle批量插入数据脚本

    oracle批量生成数据脚本,oracle批量生成数据脚本,oracle批量生成数据脚本,oracle批量生成数据脚本。

    HP刀片:Oracle网格计算的最优平台.pdf

    《HP刀片:Oracle网格计算的最优平台》 Oracle网格计算是一种先进的计算模式,旨在增强业务灵活性,优化服务质量,并提高IT投资回报率。这种计算方式通过在服务器集群上运行企业应用,提供出色的性能和扩展性。HP ...

    ORACLE批量更新四种方法.txt ORACLE批量更新四种方法.txt

    特别是在Oracle数据库环境下,如何高效地执行批量更新,成为了提高系统性能的关键因素之一。本文将详细介绍Oracle中实现批量更新的四种常见方法,并通过示例代码来具体说明每种方法的应用场景及优缺点。 #### 二、...

    HP刀片——Oracle网格计算的最优平台.pdf

    《HP刀片——Oracle网格计算的最优平台》 在当今的IT环境中,网格计算作为一种创新技术,已经成为实现资源池化和虚拟化的理想模式。网格计算能够增强业务灵活性,优化服务质量,提高IT投资回报率。而HP刀片系统与...

    oracle批量跟新数据脚本

    oracle批量跟新数据脚本,oracle批量跟新数据脚本,oracle批量跟新数据脚本。

    Oracle数据批量导入elasticsearch脚本

    Linux环境下使用sqlplus工具将oracle中的数据导入到elasticsearch中。只需要在es_bulk_tool.properties配置sql即可实现数据的批量导入。在elasticsearch6中测试通过。shell脚本需要使用sqlplus。

    kettle oracle批量加载-Oracle Bulk Loader

    kettle快速加载到oracle之oracle批量加载-Oracle Bulk Loader

    图片批量导入oracle数据库

    1. **配置JDBC连接**:首先,你需要在Java代码中引入Oracle的JDBC驱动(如ojdbc.jar)。然后,通过`Class.forName()`加载驱动,并使用`DriverManager.getConnection()`方法创建数据库连接,提供数据库URL、用户名和...

    oracle快速批量生成表和触发器和序列.zip

    在Oracle数据库管理中,批量生成表、触发器和序列是一项常见的任务,特别是在系统初始化或数据迁移时。这个压缩包文件“oracle快速批量生成表和触发器和序列.zip”显然是为了帮助用户快速完成这类操作。下面将详细...

    oracle批量删除数据

    - **删除速度快**:在Oracle数据库中,采用特定的方法进行批量删除数据时,可以显著提高处理速度。根据描述中的信息,批量删除100万条记录只需要大约3分钟的时间,这比传统的逐条删除要快很多。 ##### 限制: - **...

    OraExcel excel连接oracle插件 批量插入

    "OraExcel excel连接oracle插件 批量插入"这个主题聚焦在如何通过OraExcel插件实现Excel与Oracle数据库之间的高效交互,特别是批量数据插入的功能。 OraExcel插件是一款专门设计用于简化Excel与Oracle数据库间数据...

Global site tag (gtag.js) - Google Analytics