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

来源 :科学时代·下半月 | 被引量 : 0次 | 上传用户:aaronqi666
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  【摘 要】在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分多钟,时间大为提高。此结果证明存储过程的执行效率确实还是很不错的,能大幅度的提高数据的写入速度。
  在此基础上我们还能提高写入数据的速度吗?我们来分析一下,数据写入数据库时数据库系统会进行一些什么操作。从关系型数据库工作的模式我们可以得知,当数据写入数据库时,数据库系统会为数据建立索引等信息,如果在写入数据时定义了许多的索引,这也就意味着写入数据的时间也会增加。如果是随机数据写入,数据库中存储索引的节点也会不断的增加和分裂,这样更进一步增加了处理时间。通过这个分析我们在使用存储过程的基础上,尽量减少索引的处理,先删除数据表的索引,当数据写入结束时再重新为所有数据建立索引,以此方法来提高数据的写入速度(代码从略)。在程序开始写入数据之前,先调用pDeleteIndexies函数将数据表索引删除,等数据写入完毕之后调用pCreareIndesies函数重新为所有数据建立索引信息。修改后的程序运行结果,写入20万条记录所用的时间约为140秒,比只使用存储过程提高了接近一倍的时间。
  通过以上三种写入数据方法的比较我们得出这样的结论,在关系型数据库中,使用delphi的dbExpress组件进行数据库记录的写入时,存储过程的使用能大幅度提高写入的速度,再结合删除索引的方法则能进一步提高写入数据的速度。这个结论为大量数据录入速度的提高提供了解决办法,具有提高效率的积极作用。
  参考文献:
  [1] 《Delphi数据库编程》北京交通大学出版社
  [2] 《SQL Server 从入门到精通》清华大学出版社
其他文献
学生管理工作是学校生存和发展的基础性工作。本文结合高职院校学生管理工作的特点,提出要坚持精细化管理;要正确处理“情感管理”和“制度管理”的关系,正确处理管理与服务的关
《义务教育数学课程标准》(2011年版)指出:数学活动经验的积累是提高学生数学素养的重要标志. 数学活动经验需要在“做”的过程和“思考”的过程中积淀. 用于操作的学具或教
期刊
【摘 要】传媒类院校是以广播电视为重点,以艺术类专业为主干的具有学科优势和鲜明特色的院校。传媒人作为舆论引导的先行者应具备更好的思想政治素质和职业敏感度。尤其是在新媒体环境时代,构建具有鲜明传媒学院特色的思想政治理论课教学模式,增强思政课的时效性,对培养未来传媒人才进行马克思主义中国化的传播具有重要意义。  【关键词】新媒体环境;传媒院校;思想政治理论  一、新媒体环境对于民办传媒类高等院校学生的
【摘 要】高等院校二级院系图书资料室在服务院系的教学、科研工作中,扮演着不可代替的角色,其以突出的理论性、专业性、前沿性特征为院系教学与科研建设与发展奉献着自己的贡献。但高校二级院系图书资料的管理与建设方面仍然存在一些问题,高校应重视院系图书资料室的管理与建设,使其更有效的服务于教学与科研。  【关键词】高等院校;院系;图书资料室;问题;对策  高等院校图书管理分为校级图书馆和院系图书资料室两个层
【摘 要】本文从扩大高校自主权、招生宣传的重要性、招生方式多样化、综合素质评价标准和评价办法、建立招生信息化管理服务平台和建立招生录取平等和公平机制,提高透明度六个方面,对高职高校招生管理制度进行了分析与思考,提出了招生现在存在的问题以及未来如何构建的一些方法。  【关键词】高校;招生;招生管理制度  在中国高等教育进入大众化,以及全面建设小康社会与和谐社会的历史阶段,如何进一步推进高校招生管理制
【摘 要】教师职业倦怠是教师不能有效应对工作压力而产生的一种极端心理反应,是教师伴随于长期高水平的压力体验下而产生的情感、态度和行为的衰竭状态,教师职业倦怠是教师心理研究的焦点领域。本文主要介绍了高职教师职业倦怠的概念,高职教师职业倦怠的测量方法,高职教师职业倦怠的研究热点:包括高职教师职业倦怠的表现与危害、影响因素、与相关变量的关系及对策。  【关键词】高职教师;职业倦怠;社会支持  自 197
【摘 要】高校自主招生是高校办学自主权扩大的一种重要表现。它出台的初衰,除了扩大高校的自主权,更为重要的是弥补高考制度“一考定终身”的缺憾。然而,由于种种原因,高校在自主招生过程中显露出来的不成熟,让公众对高校自主招生产生了许多质疑及天津市高职自主招生考试形式。本文旨在对此做出思考、分析、举例,并提出一定可行性解决办法。  【关键词】高校自主招生;高考;天津市自主考试形式;质疑  长期以来,我国普
【摘 要】高校辅导员工作直接关系到学生的未来发展,在大学生成长过程中起着至关重要的作用。本文分析了“90后”大学生的性格缺陷,结合当前学生工作面临的国际国内新形势和新挑战,强调高校辅导员要增强自己的职业认同感,准确把握职业定位,把职业发展与学生的发展紧密联系起来,甘当铺路石,全心全意为我国的社会主义人才建设添砖加瓦。  【关键词】辅导员;思想政治教育;职业定位;发展  高校担负着培养高级专门人才和
【摘 要】本文根据网络发展的趋势及网络安全存在的隐患,结合现有网络安全的加密技术,阐述了网络安全的重要性,提出了网络安全和加密的前景。  【关键词】网络安全;加密;密码  一、前言  随着计算机网络技术的飞速发展,计算机系统的安全问题也越来越引起世界各国的广泛关注,信息网络的大规模全球互连趋势,以及人们的社会生活对计算机网络依赖性的与日俱增,使得计算机网络的安全性成为信息化建设的核心问题。  二、
根据嵌入式工控一体机TPC-1062KS具有的以太网通讯功能和自带MCGS组态软件嵌入版,本文研究了当个人电脑PC作为上位机装有MCGS嵌入版组态软件后,通过对上位机MCGS的以太网协议的