Delphi中使用dbExpress组件处理大量数据时提升写入数据库速度的探讨.docVIP

Delphi中使用dbExpress组件处理大量数据时提升写入数据库速度的探讨.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Delphi中使用dbExpress组件处理大量数据时提升写入数据库速度的探讨.doc

Delphi中使用dbExpress组件处理大量数据时提升写入数据库速度的探讨 【摘 要】在delphi中利用dbExpress组件处理大量数据时,处理数据的速度是实际应用中一个重要的问题,如何提高数据处理速度对提升用户的使用效率起着至关重要的作用。解决这个问题必须对dbExpress组件及数据库的运行方式有深入的了解,才能合理的解决大量数据处理的速度问题。 【关键词】dbExpress组件;存储过程;索引对数据处理的影响 使用delphi的dbExpress组件在一般的日常事务中少量数据写入数据库时,运行速度不会有明显的影响,大部分应用都能正常平稳的运行,当有大量数据要一次性写入数据库时,写入速度问题就显得非常重要了,速度太慢会直接影响程序的使用,影响工作效率。为了验证dbExpress组件数据写入速度,我们以一次写入20万条记录来进行测试,找出提高dbExpress组件数据写入速度的方法。 测试思路:建立一个仿真数据表,在程序中以计算的方式来产生每一个字段的值,然后计算整体的执行时间。 测试方法:首先直接使用TClientDataSet和dbExpress组件在interBase中添加数据。代码如下: procedure TfrmPermain.btndbExpressClick(sender:Tobject); var iCount:integer; begin ILOOPS: StrToInt(edtTestCount.Text); dmDBExpress.cdsTest.DisableControls; pgLoops.Position: 0; pgLoops.Max: ILOOPS; try LogStartTime; for iCount: 1 to ILOOPS do begin dmDBExpress.cdsTest.insert; dmDBExpress.cdsTest.FieldByName(‘ID’).Value: GetID; dmDBExpress.cdsTest.FieldByName(‘Name’).Value: GetName; dmDBExpress.cdsTest.FieldByName(‘PHONE’).Value: GetPhone; dmDBExpress.cdsTest.FieldByName(‘ADDRESS’).Value: GETAddress; dmDBExpress.cdsTest.FieldByName(‘SALARY’).Value: GetSalary; dmDBExpress.cdsTest.FieldByName(‘EDATE’).Value: NOW; dmDBExpress.cdsTest.Post; pgloops.Postion: pgloops.Postion+1; Application.ProcessMessages; end; dmDBExpress.cdsTest.ApplyUpdates(0); LogEndTime; LogRunTime(mmStatus,’DBX 新增’ +IntToStr(ILOOPS)+’笔数据时间 :’) finally dmDBExpress.cdsTest.EnableControls; end; end; 运行程序,首先输入较小的测试记录数,我们输入10000个记录数,得出的时间为34秒左右,输入20万个记录,所花的时间大约为700秒,大概是11分钟左右。写入效率明显有点低。看来直接使用dbExpress组件效率不够高。 因为我们使用的是关系型数据库,而关系型数据库的存储过程特性可以让执行速度提高。存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程在运算时生成执行方式,所以,以后对其再运行时其执行速度很快。依据存储过程的特性我们对代码进行修改,利用dbExpress中的TstoredProc组件来调用存储过程,这里代码从略。加入调用存储过程后,写入10000个记录的时间大约为7秒,输入20万个记录的时间约为250秒,大概是4分多钟,时间大为提高。此结果证明存储过程的执行效率确实还是很不错的,能大幅度的提高数据的写入速度。 在此基础上我们还能提高写入数据的速度吗?我们来分析一下,数据写入数据库时数据库系统会进行一些什么操作。从关系型数据库工作的模式我们可以得知,当数据写入数据库时,数据库系统会为数据建立索引等信息,如果在写入数据时定义了许多的索引,这也就意味着写入数据的时间也会增加。如果是随机数据写入,数据库中存储索引的节点也会不断的增加和分裂,这样更进一步增加了处理时间。通过

文档评论(0)

sis_lxf + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档