SQL Server 2008 数据加载创世界记录


  本文标签:SQL Server 2008 SSIS 数据加载

  【51CTO独家特稿】自今年2月推出的SQL Server 2008后 ,使用其SSIS( SQL Server Integration services)工具你可以就感觉到数据加载的世界级的性能记录  。微软与Unisys公司宣布了一项纪录,它是关于关系数据库的数据提取,转换和加载( ETL的)工具  。它能在不足30分钟加载超过1 TB的TPC- H的数据  。我想在此提供以Q &A的纪录形式提供一些背景材料,尽管很难提供更多的技术细节  。我们也正在筹划关于这方面的论文,希望对你了解这背景资料有用  。

  - Len Wyatt

  数据加载速度到底有多快?

在不到30分钟,把超过1 T字节的数据从平面文件解析并通过网络传送,最终载入到目的地数据库,这创造了一个世界纪录,超过了以往发布的使用ETL工具的所有结果  。这是一个速度超过每小时2TB( 650 + MB/秒)   。更精确地说, 相当于1.18TB的单位档案资料装载仅用1794秒  。这等价于25分20秒加载1.00TB数据或者2.36TB/每小时  。

  为什么这很重要?

企业日益增加的数据存储在许多不同系统  。 thay想知道有一个ETL工具,他们想选择能够支持任何数据卷的工具  。微软公司一直在SQL Server集成服务( SSIS )做出重大改进 ,这些记录显示出了SQL Server Integration Services2008的能力, SQL Server 2008及Unisys的ES7000服务器已经能够以更快的速度来处理大量的数据  。

为什么仅仅是做了大量的负荷数据加载?

  对于今天的商业而言, 目标系统上一直可使用的数据资源是很宝贵的,并且它们无须加以规范或纠正错误就能够加载  。在如此情况下,大批量时代的散装装载数据非常有意义  。数据集成可以涉及复杂的转换规则,错误检查和数据标准化技术  。 如SSIS这样的ETL的工具具备这些功能,如数据系统之间的迁移和格式化数据,完整性检查,键查询,跟踪谱系以及更多  。 SSIS已被证明是一个多功能的ETL工具,而现在是指出的是它还是性能最好的  。

  
你如何选择装载的数据?

  DBGEN工具,来自TPC-H benchmark性能测试工具用于产生1.18 TB的源数据  。数据由DBGEN分割后,允许它被装载在并行的多个系统中  。 DBGEN生成数据的客户,零部件,供应商,订单和项目  。这是具有广泛代表性的一个典型  。这些数据包含各种数据类型,包括日期,金额,整数,字符型及标识型  。

  请注意ETL装载结果并非的TPC - H的基准测试结果,不应该和TPC - H的基准测试相比  。 

  这是一个认证基准吗?

  有没有一个被普遍接受的基准的ETL工具? 微软认为应该有  。基准测试的业界标准能导致良性竞争,从而提供更好的产品和采用更好的技术,以获得更高的性能  。
微软可能会很高兴有机会与业界其同仁一道确定一个共同的基准,以反映ETL工具的真实使用状况  。

  TPC-H的数据的使用为这一项目提供了一个方便  。这不是一个TPC-H的基准测试结果  。

  这是经过验证的性能测试吗?

  多家竞争对手已经在TPC-H的数据上公布了结果  。Informatica 此前曾报道,此前装载1TB数据为45分钟  。SSIS已经超越了记录,只需要15分钟以上   。

  尽管已经有了一些其他的标准,但对于非标准的数据集,并没有足够的资讯以进行全方位意义上的比较  。基于这部分原因,微软将支持建立一个行业标准的ETL的基准  。

  使用什么系统配置?

  数据库服务器运行一个ES7000/one Unisys的企业服务器, 32双座双核心Intel ® XEON tm 3.4千兆赫( 7140米)处理器, 256 GB的RAM和8双端口4 Gbit HBA卡的  。 SQL Server数据存储在一个拥有165 ( 146 gb/15 krpm )针的EMC Clariion CX3-80 SAN上  。数据库服务器运行在Windows Server 2008x64数据中心版操作系统上面的SQL Server 2008 企业预览版( v10.0.1300.4 ,  " 2008年2月的发布的CTP版本 " )   。

四个服务器作为数据源,它们是来自现代企业的不同的数据系统中的建模事实数据  。每一源服务器运行SSIS包通过网络发送数据到数据库服务器  。源头服务器运行着Windows Server 2008的SQL   Server版本v10.0.1300.4上的SSIS    。源数据则来自DBGen产生的平面文件   。

  源服务器, 4 台Unisys的ES3220L windows2008 x64企业版服务器  。每台服务器配备2 × 2.0 GHz的四核Intel处理器, 4 GB的内存,双端口4 Gbit Emulex的HBA和英特尔PRO1000/PT网 卡  。源数据则来自于被读出2 ×的EMC CLARiiON cx600 SAN存储设备   。 数据源服务器通过双端口1 GB的以太网连接到es7000/one Server数据库服务器  。

  为什么要使用多数据源系统?

  现代大型企业是包含复杂的业务活动  。大型数据集往往是混合着多种数据源  。这种测试更切合实际,酷似一个真实的ETL场景  。

  SSIS包看起来是什么样子的呢?

这里有一个包, 通过源系统运行着多个实例  。 它也是简单的:存在有一个控制流 为每一个"流"所产生的数据DBGEN  。通过OLEDB控制流为每一个表存在一个数据流,每一个数据流读平面文件数据,并写回SQL Server数据库  。在平面文件数据源和数据库表之间存在的这个数据集有一个一对一的栏位之间的映射,  。

  让我们看看Windows Server 2008技术重点:

  Windows Server 2008做了许多创新的工作,其中包括内存管理的显着改善, PCI和块存储输入/输出,以及核心网络,从的业绩  。由于这些进展, Windows Server 2008能够持续大约每秒960兆字节网路传输   。
 
做这项工作是否需要更多秘密的技巧?

  不需要特别的版本和技巧,尽管这是一个预版本, 但它同时是一个正式的SQL Server 008企业版本  。在产品使用上没有任何特殊代码  。我们所做的一切足以让别人仿效  。

我们在关系型数据库中完成了被称为"Soft NUMA"的技术,它通过端口映射在系统内部得以获得良好的分布式工作效果  。 这是技术已经公开发表,你可以在 MSDN上找到文章  。我们还设置X-flag,从一开始使用SQL Server起 , 这就降低了SQL Server花在收集性能统计在运行时间  。 

  在SSIS中我们采用了使用SSIS数据流匹配的数据类型,因此从平面文件读取的数据并不需要转换,在文本文件字段被应用的时候就能获得最快地解析   。

在服务器上的网络连接使用了内建Intel PRO/1000 GbE控制器  。发布版本的网络驱动程序被使用,而且以太网Jumbo帧被配置好,以更好地支持这项散装流的情况  。Windows Server 2008年的新的TCP/IP接收窗口自动调谐默认为"限制"   。

  后续将有一份完整的清单文件发表,它将包含系统的设置和优化等内容  。