- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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分多钟,时间大为提高。此结果证明存储过程的执行效率确实还是很不错的,能大幅度的提高数据的写入速度。 在此基础上我们还能提高写入数据的速度吗?我们来分析一下,数据写入数据库时数据库系统会进行一些什么操作。从关系型数据库工作的模式我们可以得知,当数据写入数据库时,数据库系统会为数据建立索引等信息,如果在写入数据时定义了许多的索引,这也就意味着写入数据的时间也会增加。如果是随机数据写入,数据库中存储索引的节点也会不断的增加和分裂,这样更进一步增加了处理时间。通过
您可能关注的文档
- #1循环水泵短路跳闸引起#1燃机跳机事故分析.doc
- #3炉水冷壁拉裂的原因分析及防范措施.doc
- .Net程序防破解的一些常用方法.doc
- 1000MW机组炉顶密封安装工艺的改进.doc
- 100G网络传输设备的测试方法探讨.doc
- 10kVA逆变器的保护电路设计研究.doc
- 10kV线路保护越级跳闸故障原因分析.doc
- 10kV配电工程项目风险管理研究与应用.doc
- 10KV配网线路接地点的检测.doc
- 110kV供电综合自动化与调度系统改进探讨.doc
- Design of intelligent bus stop based on GPRS.doc
- Design of radiofrequency hyperthermia system based on MSP430.doc
- DF4DH型机车在多风沙环境中的运用养护.doc
- DF协同通信网络两种机会中继选择策略研究.doc
- DHCP中继代理在虚拟机linux系统中的研究与实现.doc
- Dijkstra算法在物流配送运输中的最短路径优化研究.doc
- DLP数码光显互动一体机的管理与维护.doc
- DWDM技术在光纤通信系统中的应用.doc
- DX400发射机主备倒换互锁安保系统的设计.doc
- ERP业务审计系统在内部审计工作中的应用.doc
最近下载
- 吉林省中药软片炮制规范.pptx VIP
- 名著阅读《湘行散记》七年级语文上册部编版(共9页).docx VIP
- 《白洋淀纪事》阅读测试题含答案(推荐).docx VIP
- 必考名著《白洋淀纪事》导读+知识点汇总.pdf VIP
- CQJZDE-2008 重庆市建筑工程计价定额.docx VIP
- 人教部编版七年级语文上册名著选读《湘行散记》导读.doc VIP
- 重庆市建筑工程计价定额CQJZDE-2008.doc
- 部编版七上语文名著导读《朝花夕拾》、《白洋淀纪事》、《湘行散记》知识点练习(含答案).docx VIP
- 超星尔雅学习通《大学生劳动教育》章节测试含答案.docx VIP
- 七年级上册名著《湘行散记》知识点+习题(共12页).docx VIP
文档评论(0)