yardeyking - 2008-8-6 19:57:00
最近一个项目用到SSIS的
发现一个问题,在如下情况下,每次数据流任务转换的数据量不会超过5w条
*源和目标都是oracle9i
*源的字段有50个,目标的数据字段比较多,超过200个,但是使用的不多,转换有30个左右的字段。都用OLEDB进行连接。
*用到了,派生列(转换类型和代码集)、脚本组件(用来生成主键)
每次调试开始后,发现进程中的dtsdebughost.exe不断的飙升内存(以20MB/s的速度),一会儿就飙到1.7G,32位服务器单个线程的最高限制了,然后现场自动退出了,这时候转换了大概1.3w条。
我对源和目标用sql语句进行了优化(仅选取了用到的字段),然后发现飙升的速度有所下降,大概是3MB/s,飙到1.7GB的时候报内存不足的错误,大概转换了5w条数据。
更换了ssis2008也不行,这让我很迷惑,难道SSIS的转换需要不断占用内存,而且不释放?
还是我的设计有问题,请各位版主大虾予以解惑,谢谢!
是不是这样的情况必须用64位的服务器呢,要是转换个上百万条的数据,该用多大的内存啊
中间也调了缓存了,不过改变不大......
我现在转换的数据源大概每个表有20w+的数据量,以前用powercenter的时候没有遇到这样的问题,都是32位的pc服务器,用informatic一次性转换个300w+的数据都没有问题.....
whbjob - 2008-8-7 9:21:00
增加虚拟内存配置,将数据转换方式以多次批量方式提交。
yardeyking - 2008-8-7 9:47:00
谢楼上的解答,目前我是这么做的,一般的都还可以应付,但是有几张表是近百万条,岂不要分割20次??所以上来请教一下~~是不是有调优的办法
lijingna128 - 2008-10-31 16:25:00
目标:如果选择表,选择快速加载。把表锁和检查约束去掉即可。百万数据加载也是几分钟。。。