关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » SQL语言 »Integration Services:高性能策略(1)

    Integration Services:高性能策略(1)

    2015-11-23 00:00:00 出处:ITJS
    分享

    Elizabeth Vitt在商业智能领域拥有超过十年的商业系统开发,项目管理,咨询和培训经验。她在数据仓库,ETL和OLAP设计和实施方面还有着丰富的教学经验。

    目录

    简介 

    优化操作

    对于这一序列中的每一步操作,你都可以使用性能分析,来指导你寻找优化和提升整个过程的机会。例如,在操作2种,当SSIS从文本文件中把数据读入数据管道时,所有的字段都被读成字符串类型,甚至当里面包含整数时也是。假如你的目的是使用已命名,确定类型的列将这一文件读入到的SQL Server目标数据表中,数据转换必须在数据读取的某个过程中就进行了。

    为了减少数据集的大小,提升整体数据读取的性能,你可以在这一操作过程的早期就设置数据类型。在表1给出的例子中,对数据设置类型的最佳时间是操作2的过程中,当文件被读入到SSIS数据管道时。假如你不在这时设置数据类型,数据就将以其原始的字符串状态转过所有的步骤,直到它被读入SQL Server前才被完成了转换。

    今后再调整文件解析,你也可以获得操作2中SSIS快速解析模型的好处。这一模型对包含一般数据格式的简单数据读取使用快速的解析路由,而并不需要特定的现场解析,这一格式不包含特殊的字符,也不包含十六进制字符。

    数据类型优化并不仅仅适用于文件数据源。在SSIS数据读取过程的早期适当的设置数据类型,能够对所有的数据源都带来性能方面的好处。

    这只是一个你可以优化数据读取操作的例子。你可以将这一方法在整个过程中的每一步都实施,你就可以为每个性能考量确定出更好的设计方法。

    容量

    容量是第二个关键,重要的性能影响因素。高级别的容量会对系统的资源,如内存和CPU产生更大的影响。你越是理解容量是怎样对你的数据操作产生影响的,你就越可以调整这些资源的应用,从而产生更有效率的操作。

    定义容量

    SSIS数据管道引擎使用一个缓存导向的结构,可以在内存中高效的读取和操作数据集。这一内存中处理过程的价值在于,对于数据读取的每个步骤来说,数据都没有必要被物理的拷贝和存储。取而代之,数据管道引擎在将数据从源向目标转移的过程中,使用缓存来管理数据。

    为了优化这个管道,你的目标是,在尽可能少的缓存消耗中,传送尽可能多的记录,特别是在你处理大量数据容量的时候。为了达到这一目标,你必须首先对数据的长度(行数)和宽度(列数)进行分析。数据宽度基本上是各列数据类型的长度和,加上SSIS分配的固定长度的内存前缀。数据类型越小,对内存的使用就越有效。

    优化容量

    当你优化数据容量时,你首先应该评估所有的列,这是数据整合操作的一部分。很多时候尽管只需要这些列中的一部分,却还是将整个源文件的数据都读取了。不需要的列占据了系统的资源,应当尽可能的排除掉。

    另外一个要考虑的因素是,不管你的方案是否需要增量或完全的数据读取,从容量的角度出发,完全的数据读取是高消耗的。假如你可以用增量的数据读取替代完全的数据读取,你将极大的减少数据读取操作的容量。这点在一个应用周期中容量不断增大的情况下特别适用。

    在SSIS内,你可以通过三个主要的方法来优化容量:收缩数据集的大小,最大化吞吐量,以及定义并行操作。

    a.收缩数据集的大小 - 为了演示收缩数据集,设想下面的例子。假定这包含5000000条记录的源文件有100列,都是在1到999之间的数字。假如你对这些列都保留默认的字符串数据类型,每个条记录的每个列需要50Bytes。这意味着每一行计算后需要大约5000Bytes,再加上SSIS需要的内存前缀。所以,对于一个5000000条记录的容量,每行5000bytes,文件的总大小约是23GB。假如你将这些列更精确的定义为2-byte大小的整型,再来考虑数据集大小间的区别。这将使每行的大小变为200bytes,总的大小就缩减为954MB,比字符串数据类型节省了大约22GB。通过数据类型大小的简单改变,你就可以大大减少要读入内存的数据量。注意,以上例子也说明了数据类型之间的相对差别和收缩数据集大小节省的空间,这并不是一个定死的大小调整方针。

    b.最大化吞吐能力 – 除了设置数据类型,你还能够通过配置SSIS缓存设置——如DefaultMaxBufferSize和DefaultMaxBufferRows,来最大化吞吐能力。这些设置控制了在数据读取操作过程中创建缓存的大小,以及每次传递的记录行数。但是,对于调整这些参数的细节不在本白皮书内探讨。

    c.定义并行操作 – 优化容量的第三个方法是考虑如何对操作进行并行化处理,以获得最大的效率。SSIS支持包,任务以及转换的并行化处理。当你设计并行处理流程时,你要考虑对数据读取操作实施怎样的并行度。例如,假如你需要读取并聚集多个文件的数据到SQL Server中,你可以考虑对以下一个或多个操作并行处理:文件读取,数据聚集,目标数据表装载。尽管SSIS支持所有这些操作的并行处理,你仍旧需要搞清楚系统的资源和它们并行支持的级别。你可能创建了一个高并行度的SSIS包,而随后就意识到你的系统没有足够的CPU和内存来充分体现这些并行的优势。

    也许这个读取5000000条源记录的例子很简单,这些相同的原则却可以被直接应用到更大型和更复杂的数据读取任务中,这个任务可以包含多个数据源,需要复杂的数据转换,而且必须被装载到多个目的表中。

    应用

    根据定义好的一组数据整合操作以及对所需数据容量进行的评估,可以明确出应用因素,来帮助你决定那种数据整合应用最符合那些需求。

    理解应用的使用

    你可能会经常选择不同的应用程序去解决数据整合问题。关键是要确定哪些应用可以在给你带来足够功能的同时,成本较低。

    例如,你面临着使用SQL Server Transact-SQL的BULK INSERT语句或BCP工具来往SQL Server中读取文本文件的工作,与SSIS相比,这样可以在成本较低的情况下满足数据读取功能的需求。当你有较小的数据集和简单的数据整合需求时,上述情况很可能发生,这时启动SSIS操作的开销就能抵消使用BCP或BULK INSERT所获得的性能收益。

    帮助你做出正确的选择,我们把每一应用的主要功能组件列出来,以便你能够根据主要的需求做出相应的评价。例如,以下的使用指导可以帮助你在BULK INSERT/BCP或SSIS中做出选择。

    ◆BULK INSERT / BCP使用指导 – 当你的应用场景有以下的特征时,应该使用BULK INSERT / BCP:

    评估选择

    根据使用指导,你可以更好的评估哪种应用选择更符合你的数据需求。

    在文件读取的例子中,你的需求不仅仅是往SQL Server中读入5000000条记录,还包括对这些记录的数据聚集。考虑到这些需求,确认以下哪个方法可以完成这项任务。注意,这里仅仅列出两个可行的方法。

    ◆方案1 - BULK INSERT解决方案 – 你当然可以使用BULK INSERT去从源文件读取数据,并装载到SQL Server中。但是,你还需要增加额外的操作,在把数据装载到目标表前对其进行聚集。一种方法是使用BULK INSERT把数据放入一个暂时的表,然后使用Transact-SQL对暂时表中的数据进行聚集,再用Transact-SQL把数据读入目标表中。

    Elizabeth Vitt在商业智能领域拥有超过十年的商业系统开发,项目管理,咨询和培训经验。她在数据仓库,ETL和OLAP设计和实施方面还有着丰富的教学经验。

    目录

    简介 

    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    抖音安全与信任开放日:揭秘推荐算法,告别单一标签依赖

    ultraedit编辑器打开文件时,总是提示是否转换为DOS格式,如何关闭?

    Cornell大神Kleinberg的经典教材《算法设计》是最好入门的算法教材

    从 Microsoft 下载中心安装 Windows 7 SP1 和 Windows Server 2008 R2 SP1 之前要执行的步骤

    Llama 2基于UCloud UK8S的创新应用

    火山引擎DataTester:如何使用A/B测试优化全域营销效果

    腾讯云、移动云继阿里云降价后宣布大幅度降价

    字节跳动数据平台论文被ICDE2023国际顶会收录,将通过火山引擎开放相关成果

    这个话题被围观超10000次,火山引擎VeDI如此解答

    误删库怎么办?火山引擎DataLeap“3招”守护数据安全

    IT头条

    平替CUDA!摩尔线程发布MUSA 4性能分析工具

    00:43

    三起案件揭开侵犯个人信息犯罪的黑灰产业链

    13:59

    百度三年开放2.1万实习岗,全力培育AI领域未来领袖

    00:36

    工信部:一季度,电信业务总量同比增长7.7%,业务收入累计完成4469亿元

    23:42

    Gartner:2024年全球半导体营收6559亿美元,AI助力英伟达首登榜首

    18:04

    技术热点

    iOS 8 中如何集成 Touch ID 功能

    windows7系统中鼠标滑轮键(中键)的快捷应用

    MySQL数据库的23个特别注意的安全事项

    Kruskal 最小生成树算法

    Ubuntu 14.10上安装新的字体图文教程

    Ubuntu14更新后无法进入系统卡在光标界面解怎么办?

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。