五个细节入手 帮助提高数据插入效率

发表于:2011-1-24 10:20

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:水太深    来源:51Testing软件测试网采编

分享:

  细节三:插入延迟,提高插入操作对系统的不利影响

  在某些情况下,用户对插入数据的即时性要求可能并不是很高,此时就可以考虑通过插入延迟特性,来减少插入操作对系统资源的耗用。笔者再以ERP系统为例。在ERP系统中,有一个安全库存管理的作业。如果启用了这个作业的话,那么系统会在每天一个固定的时刻,分析账上的库存数据与安全库存之间的关系。如果发现库存数量低于安全库存时,系统就会自动生成一张请购单,将差异的数据插入到后台的数据库表中。显然,对于这些记录,用户并不需要等待数据的插入完成。如在前台调用这个作业时,可以将这个作业放在后端执行。等到执行完毕后,再通知用户即可。

  在遇到这种情况时,就可以使用插入延迟的功能。当数据库工程师启用插入延迟功能时,服务器会立刻返回,而不会在那边等着数据插入完成。如果表中没有被其他线程所调用的情况,那么记录会排队等待被插入。使用这个插入延迟特性,还能够带来另外一个好处。当多个作业同时往同一个表中插入数据的时候,这些进程会被记录在同一个Block中。这就好像将多个单独的Insert语句合并成一条Insert语句来执行,其速度会快许多。

  细节四:在插入大量数据之前,可以先将表锁定

  在数据库库中,某些表只有特定的用户才使用。而且每次使用时可能会同时插入多条数据。如在ERP系统中导入期初数据时,就会碰到这种情况。从前台客户端导入产品数据时,通常情况下中间会有一个过渡表。用户可以通过这个过渡表来核对数据是否准确。如果没有问题的话,再将其导入到产品信息表中。采取这种方式,用户还可以查询到有哪些记录没有被导入到系统中。

  由于期初数据的导入,一般是有系统管理员来完成的。此时这张过渡表只有一个用户使用。为了提高数据插入的效率,数据库工程师可以考虑,在插入之前先将表锁定。这可以提高数据插入的性能。这主要是因为索引缓冲区只是在所有的插入语句完成之后才对磁盘进行一次性刷新。也就是说,有多个插入语句就会有多少次索引缓冲区刷新。为此在数据插入之前,将数据表进行锁定,就可以大幅度的提高数据插入的效率。

  细节五:插入数据之前先对数据进行排序

  众所周知,在对记录进行排序时,需要耗费一定的系统资源。如果在插入数据时,就能够考虑到排序问题,那么在后续记录查询时,就可以避免重新排序所造成的二次开销。故笔者建议,在可行的情况下,在对数据插入之前先对记录根据一定的规则进行排序。

  如在采购订单行表中,同时插入多条语句(从物料申购单转换为采购订单)。在采购订单行中插入多条记录之前,可以根据用户的使用习惯,如按照产品的编号进行排序。用户在后续查询时,就可以直接使用查询的结果(默认情况下是根据记录插入的先后顺序来显示结果的)。显示时就不需要再进行一次排序作业,从而可以提高数据后续查询的效率。

  上面笔者提到的这个些内容,其实都是插入作业中的一些细节问题。但是这些细节内容,对于提高数据库的插入效率有很大的帮助。有时候单纯的通过提高硬件配置来改善数据库的性能,还不能够提到这么明显的效果。

22/2<12
重磅发布,2022软件测试行业现状调查报告~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计

法律顾问:上海漕溪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2023
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号