1. 优化
集成服务功能强大,开发管理较为复杂,往往ETL包能够实现功能,但是不能满足性能要求。下面将给出一些提高性能的建议。
1.1 用于提高速度的总体设置
1 优化数据源
(1) 删除不需要的列;
(2)使用SQL SELECT语句从视图中提取数据;应当避免在“OLE DB源”适配器中使用“表或视图“的访问模式。
(3) 优化数据源查询;
2 使用平面文件及其它文件源
(1) 把平面文件中相邻的不需要的列组合起来;
(2) 将平面文件中不需要的列保留为“String”类型;
3 清除隐藏的操作
(1) 只在必要的时候进行列的解析或转换;
(2) 在“平面文件源”适配器中使用“FastParse”选项;
(3) 清除不必要的日志记录;
1.2 数据流优化
(1) 使用索引
(2) 实现并行性
(3) 清除不必要的操作
(4) 将查找引用配对; 避免使用“select * from ”
(5) 近可能的在SQL Server中执行以数据集为基础的操作。例如:在SQL Server中比“排序”转换组件速度要快,特别是有索引时。
(6) 注意具有内部文件IO的转换。可以提高硬盘驱动器性能。
(7) 转移到64位操作系统中
(8) 监视内存密集型转换,如:“聚合”,“查找”,“排序”等
(9) 使用“查找“的部分缓存或完全缓存模式
部分缓存:适用于进入的数据具有重复性,而且只引用整个引用表中一小部分数据的时候。完全缓存:适用于当引用表比较小而进入的数据会用到整个引用表范围中所有的数据行时。
(10) 消除“聚合”,“查找”,“排序”操作
(11) 增大“DefaultBufferMaxSize”和“DefaultBufferMaxRows “,但是也不能太大
(12) 使用“EngineThreads “(引擎线程)。可以用日志测试需要的实际线程数,然后再设置一致。
(13) 设置“MaxConcurrentExecutables “(最大并行课执行程序数) 如果值为”-1“,则使用的线程数将是计算机中处理器的数量加2.如果控制流有10个数据流,如果设置为”4“,只能有4个数据流会被同时运行。要与“EngineThreads “相结合设置。
(14) 有些开销比较大的组件慎用:如:OLEDB命令、模糊查找、数据转换、导出列/到入列、字词查找。
1.3 插入性能
1 使用“SQL SERVER 目标”适配器;
2 设置“提交容量”;
3 打开“表锁”;
4 关闭约束;
5 使用“最少日志记录”;
6 再加载时考虑禁用索引;
1.4 如何利用约束理论优化
1 约束理论的5个步骤
(一) 约束的识别
(二) 决定如何利用约束
(三) 根据前面的决策协调和同步其它所有方面
(四) 提升约束的性能
(五) 如果在上述任何步骤中约束发生了变化,则回到第一步
2 最常见的最高优先约束
内存、CPU速度、CPU数量、磁盘驱动器速度、网络速度。
3 基准测试 约束和瓶颈的区别
4 性能计数器
· Buffers in Use
· Flat Buffers in Use
· Private Buffers in Use
· Rows Read
· Rows Written
· Buffers Spooled