学术论文投稿/征稿

欢迎您!请

登录 注册

手机学刊吧

学刊吧移动端二维码

微信关注

学刊吧微信公众号二维码
关于我们
首页 > 学术论文库 > 理工论文 实时数据库数据的批量写入及性能测试研究论文

实时数据库数据的批量写入及性能测试研究论文

0

2024-04-15 11:55:35    来源:    作者:zhoudanni

摘要:实时数据库是目前石油化工行业中普遍应用的数据库之一

  摘   要 :通过对石油化工行业使用较多的 PHD 实时数据库在多模式下的数据批量写入,  以标准差指标对测试值进行可信 度分析、测试调校,得出多模式下实时数据批量修改、更新测试的最优结果,探索一种行之有效的工业实时数据库优化、应用 的方法。

  关键词 :实时数据库,Java,测试

  1 实时数据库简介

  实时数据库是目前石油化工行业中普遍应用的数据库之一,可以采集油井、气井、水井、站厂、管网等生 产过程的实时数据,为实时优化、决策分析、自动控 制提供可靠的数据保证 [1]。本文以霍尼韦尔实时数据库 PHD(Honeywell Process History Database) 为例, 对 实时数据在多模式情况下批量增删改的性能进行了测试 验证 [2]。

  2 数据库连接

  使用 Java 语言对 PHD 数据写入一般有 2 种方法。

  2.1 通过 JDBC 连接 Sql Server 数据库提供用户、密码即可。

  2.1.1 通过 JDBC 管理连接

  JDBC 连接是Java 连接数据库的基础组件,是本次 测试的重点。通过 DriverManager.getConnection(url, user, password) 连接。

  2.1.2 通过 Druid 管理连接

  Druid 是阿里开源的JDBC 组件,通过建立高效的数 据库连接池优化数据库读写性能, 是本次测试的另一个重 点。通过 DruidDataSourceFactory.getConnection() 连接。 2.2 通过 WSDL(Web Services Description Language) 调用  modifyTagData 接口写入数据这种方法需要 PHD 服务器开启 Honeywell PHD Interface WindowsService 服务。在客户端, 使用 PHD 提供的 phdserver-11.2.0.1.0.jar 等系列jar 包 [3],用 URL 和授权码连接数据库,调用 modifyTagData 写入数据。

  在调用类中,使用下面的代码连接 PHD 数据库 :static {phdService =new PHDDataInterfaceSvrLocator().getBasicHttpBinding_IPHDDataInterfaceSvr(new URL(phdUrl));}此接口是本次测试的重点。

  3 数据批量写入方法

  (1)使用 JDBC 和 Druid,均需要调用数据库的存 储过程 UpdateTagValue 写入数据。

  (2)使用 WSDL, 调用 modifyTagData 写入数据, 方法如下。

  arr = tagList.subList(index, index + loadPHDSize). toArray(new TagData[0]);

  x = phdService.modifyTagData(arr, authCode); }

  4 数据验证的方法

  数据验证调用存储过程 GetPeriodAllRawValues, 进行记录时间的对比。

捕获.JPG

  5 测试内容

  在实际生产环境中,往往需要在 10 分钟内写入 10 万个标签的数据, 或相当于 5 分钟内写入 5 万个标签的 数据。本次测试以此为基准,通过多种写入模式,期望 找到符合实际生产环境的最佳数据写入模式组合。

  5.1 测试结果图说明

  测试了 6 种情形下 PHD 数据批量写入的速度,并 绘制了对应的折线图,各图幅的通用设置说明如下。

  (1)横坐标是批量加载的标签个数,为 8、16、 32、64、128、256、512、1024、2048。(2)右坐标轴,  是数据写入速度,单位是秒。(3)左坐标轴,是反映写  入时间变化的统计指标 :标准差,通过标准差的变化,  判断测试结果是否达到“稳态”。标准差值小,表示对  应模式的多次写入速度的偏差小,其平均值稳定可靠 ; 标准差太大,可以增加测试次数,使写入速度值稳定在  某个值,达到“稳态”,标准差值也会随之下降,以此  增加测试数据的可信度,如果多次测试后,标准差仍然  较大,说明在此模式下,写入速度确实不稳定。由于影  响数据写入的因素较多, 一般写入速度不能达到预期的  “稳态”,通过引入标准差的概念,能够快速判断测试结  果的稳定性,增加测试结论的可信度。标准差折线对应  各图中的圆点虚线图例。(4)基准时间线,对应各图中  的直虚线图例,表示 5 分钟的写入时间基准线,超过基  准线意味写入时间过长 ;在基准线之下,意味写入速度  能够满足生产需求。(5)写入速度线,表示在当前模式  下,经过多次测试写入 PHD 的平均速度,值越小写入  速度越快(为了便于与 5 万的记录做对比,把 10 万记  录的速度进行除以 2 处理)。(6)max 线,对应各图中  的细虚线图例,即在多次测试中,在当前模式下最大的  写入时间。(7)min 线,对应各图中的粗虚线图例,即在多次测试中, 在当前模式下最小的写入时间。max 线和 min 线是写入速度的包络线。

  5.2 测试模式及结果分析

  分别进行了 6 种加载模式对比。

  (1)测试模式 1。加载标签数量 5 万个,使用JDBC 驱动版本 :9.2.1,调用数据库的存储过程 UpdateTag Value 写入数据, 批量值分别设置为 :8、16、32、64、 128、256、512、1024、2048,测试结果如图 1 所示。Sql Server 数据库的驱动程序有 41、42、9.2.1、12.4.0 等 多个版本,通过 JDBC 连接对比,发现 9.2.1 写入速度 相对较快且稳定,因此选择 9.2.1 作为本次测试最终的 驱动程序。

捕获.JPG

  结果显示,在模式 1 时写入花费时间在 284s 左右, 批量加载值在 16~256 时比较有优势。写入速度值标准 差较小,在 50 以下,可以判断写入速度基本稳定。

  (2)测试模式 2。加载标签数量 5 万个,使用 Druid 管理连接, 调用 UpdateTag Value 写入数据,批量值设 置相同,测试结果如图 2 所示。

  结果显示,在模式 2 时写入花费时间在 272s 左右, 批量加载值在 64~1024 时比较有优势。写入速度值标 准差较小,基本在 50 以下,可以判断写入速度基本稳 定。其 max 包络线比测试模式 1 低, min 包络线比测 试模式 1 高。

  (3)测试模式 3。加载标签数量 5 万个,使用 PHD 提供的 WSDL 服务, 调用 modifyTagData 写入数据, 批量值设置相同,测试结果如图 3 所示。

  结果显示, 在模式 3 时写入花费时间在 297s 左右,  批量加载值在 64~1024 时比较有优势。写入速度值标准 差较小,基本在 50 以下,可以判断写入速度基本稳定。 其包络线面积较小,测试值与生产要求的 300s 接近。

  (4)测试模式 4。加载标签数量 10 万个, JDBC 驱 动版本 :9.2.1, 调用 UpdateTagValue 进行数据写入, 批量值设置相同,测试结果如图 4 所示。

  结果显示,在模式 4 时写入花费时间在 281s(实 际是 281s×2=562s) 左右, 批量值在 32 ~ 1024 时比 较有优势。写入速度值标准差较小,基本在 50 以下, 只有在批量值为 128 ~ 512 时出现了对写入速度有利的 波动,可以判断写入速度基本稳定。其 max 包络线在 300s 之下,显示有较好的应用前景。

  (5)测试模式 5。加载标签数量 10 万个,使用 Druid 管理连接,调用 Update TagValue 写入数据,批量值设 置相同,测试结果如图 5 所示。

  结果显示,在模式 5 批量值在 32 ~ 256 时,花费 时间在 280s(实际是 280s×2=560s) 左右, 当批量值在 512 ~ 2048 时,花费时间在 242s(实际是 242s×2=484s)左右。但此模式下,速度值的标准差也比较大,显示写 入时间不稳定,写入值可信度不高,在生产应用时需要 注意。在批量值为 512、1024、2048 时, 虽然标准差 也很大,但速度优化也很大,在实际生产中有比较大的 应用潜力。

  (6)测试模式 6。加载标签数量 10 万个,使用 PHD 提供的 WSDL 服务, 调用 modifyTagData 写入数据, 批量值设置相同,测试结果如图 6 所示。

  结果显示,在模式 6 批量值在 16 ~ 64 时花费时间在 297s(实际是 297s×2=594s) 左右, 批量值在 256 ~ 2048 时, 花费时间在 242s(实际是 242s×2=484s) 左右, 比 较有优势。但此模式下,标准差也比较大,显示其受外 界影响较大,写入时间不稳定,写入值可信度不高,在 生产应用时需要注意。批量值达到 256、512、1024 时, 写入时间的优化比较可观,在生产中可以考虑使用。
捕获.JPG

  (7)测试结果及整体对比图。写入的平均速度整体 对比如图 7 所示。

  从图 7 中可以看出,当批量值加大到 64 之后,基 本能够满足生产需求 ;写入标签数量达 10 万时,比 5 万 有优势。

  结果显示, 使用 UpdateTagValue 比 modifyTagData 有优势,使用 Druid 比JDBC 有优势,相关的写入时间 与基准时间(即 300s/5min, 或 600s/10min) 的差距值 数据如表 1 所示,其中负值越大,表示离基准时间线越 远,写入时间越短。

捕获.JPG

  6 测试结论

  (1)在写入 5 万条记录时,速度基本稳定在 285s 左 右,在写入 10 万条记录时,稳定性变差,速度在 536s 左右,基本满足生产需求。(2)本次测试中,经过多轮 检测没有发现数据丢失现象。如果加大批量值,需要检 测数据丢失现象,在实际生产环境中需要注意。(3)建 议在Java 环境下, 推荐的 PHD 数据写入模式是 :驱动 程序采用 Sql Server 9.2.1 版本 ;采用 Druid 1.2.9 管理数据连接 ;批量加载大小设置为 512 或 1024。(4)如果 追求写入时间稳定,应该使用JDBC 连接,批量值设置 为 128~1024 较好,相关的标准差值见表 1。

  7 影响因素

  本次测试的环境,从本地读取 Excel 表中的标签, 写入远程数据中心机房的服务器,没有进行并发测试, 写入环境比较通用,与实际生产环境大致类似,对于 测试结果的影响因素有以下几个方面 :网络拥堵、数据 提交时间间隔、PHD 服务的参数设置、服务器系统参 数设置、系统运维状态等。实际测试过程中,还使用 MyBatis 框架,进行了写入测试,但结果不理想,因此 没有加入数据对比中。可见在 Java 环境下,使用框架 结构对数据操作的影响还是比较大。

  8 结语

  本文从 JDBC 驱动、数据操作框架、批量写入等方 面进行了 PHD 实时数据库数据写入测试,通过控制测 试数据的标准差方法,找到了适应于实际生产环境的最 佳数据写入模式组合。这种批量数据写入的方法对于其 他实时数据库的数据采集、转储、数据应用等具有现实 的指导意义。

  参考文献

  [1] 李立荣,张敏,张建涛.中国石油MES系统中的PHD及其应用 [J].数字石油和化工,2007(11):8-12.

  [2] 黄永松,王秀霞,顾治波.基于Honeywell PHD的应用开发 技术研究[J].软件,2011,32(4):59-60+63.

  [3] 冯富霞.基于Axis开发Web服务的研究[J].计算机工程与设 计,2005,26(3):667-669.