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

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

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

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

  插入数据,是MySQL数据库的基本任务。不过不要小看这个插入数据的动作。在数据库性能优化上,可以在这上面做很大的文章。如果利用MySQL作为一些即时信息化管理软件的后台数据库,如ERP系统。由于其数据插入的作业非常频繁,而且对性能的要求也比较高。此时数据库管理员就需要采取措施来提高数据插入的效率。针对这块内容,笔者认为数据库工程师在应用程序与数据库设计时,需要注意如下几个细节问题。

  细节一:同时插入多行记录时,宜采用一条Insert语句

  在数据插入时,往往需要同时往一个表中插入多条数据。如以ERP系统的采购订单为例。用户在前台客户端录入采购订单时,有可能需要向同一个供应商同时采购多个原材料。此时在数据库中,就需要往一个表格中同时插入多条记录。在插入数据时,可以通过两个方式实现。一是采用多条Insert语句,每个Insert语句插入一条记录。另外一种方式是只采用一条Insert语句,插入多条语句。采取这两种方式,有什么差异呢?

  从语言编写的角度看,第一种方式比较清楚明了。但是从数据插入速度的角度来看,第二种方式性能比较好。特别是一次性插入一两百条记录时,两者所需要的时间会相差一倍以上。如下图所示,就是使用一条Insert语句插入多条记录的举例。

  总之在数据插入时,需要注意使用带有多个值列表的Insert语句一次插入多行记录要比使用一个单行插入语句快很多。而且随着行数的增加,这个差异会越来越大。在数据库设计时,如果有设计到同时插入多条数据的纪录,如通过客户端导入基础数据、通过前置单据自动生成相关单据,这些作业都会遇到向某个表中一次性插入多条记录的情况。此时从提高数据库性能的角度考虑,笔者建议采用一个Insert语句同时插入多条记录的方式。虽然说编写语言的时候会增加复杂程度,但是这点投资与数据库性能优化相比而言,是值得的。

  细节二:批量插入记录时,建立采用Load Date Infile语句

  有时候可能需要往Mysql数据库中批量导入数据。如在ERP系统初始化过程中,需要将产品数据导入到系统中。实施顾问一般会要求用户根据他们的格式准备好相关的数据,然后利用导入作业,将这些数据一次性导入到数据库中。虽然这个导入作业是通过前台客户端来完成的,但是最终仍然是反映在数据库中。

  针对这种批量数据的导入,数据库又提供了两种方式。一是上面所介绍的,采用一个Insert语句插入多行记录的方式;另外一种就是采用Load Date Infile的方式。这两种方式有什么差异呢?Load Date Infile顾名思义,就是从一个文件中导入数据。为此如果采用这种方式的话,用户需要预先准备一个固定格式的文件。而Insert语句的话,没有这个要求,其可以直接利用其他作业中获得的数据。从这个角度讲,如果插入的纪录数比较少(如在一百条左右)或者通过系统交互来获得数据,此时比较适合使用Insert语句。从性能的角度考虑,通常情况下使用Load Date Infile语句的方式插入数据要比使用Insert语句速度快10到20倍。为此如果插入的数据量比较多,如期初导入数据时可能会有超过上万条的记录,此时使用Load Date Infile的方式能够取得比较好的性能。

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号