我正在创建临床数据仓库,因此我正在测试不同的场景。我正在将下表从oracle DB(Attunity连接器)加载到SQL DB(OLE DB):
表1 1.2 GB(300万行) 表2 20 GB(2亿行) 表3 100 GB(2.5亿行) 表4 25 GB(6000万行)
对于我的初始负载,我计划使用SSIS并仅从TABLE1 / TABLE2 / TABLE3 / TABLE4中选择*
问题:
可以有多个数据流任务来将每个表加载到一个包中。这样它们都可以一起运行。我只是想以此来提高速度。但是以某种方式它比我单独运行它要慢。
“加载*从表中”也是一种加载完整表的好方法吗?似乎很慢!
答案 0 :(得分:2)
您可以执行的并行数据流任务数量与处理器内核数(减一)一样多。也就是说,如果您使用八核处理器,则并行任务的理想数量是7(8 -1)。只需将其放入不同的序列容器(不是强制性的,而是为了便于阅读)并执行。
您可以通过调整设置DelayValidation=true
和使用OPTION ( FAST 10000(or any value,just do some trials))
之类的几项来加快数据加载,还可以使用DefaultBufferSize
和DefaultBufferMaxRows
直到获得正确的那个。另外,如果您打算运行并行DFT,请检查设置中的MAXDOP
值是否未设置为1
。
而且,切勿使用SELECT * from table_name
。列出列名,*
会增加额外的开销,并且会大大降低查询速度。
答案 1 :(得分:0)
过程1:使用SSMA
您可以使用SQL Server迁移助手(SSMA)将数据从Oracle迁移到Sql Server数据库/模式/表。
这是Microsoft的用于数据库迁移的开源工具。
Microsoft SQL Server迁移助手(SSMA)是一种工具,用于自动将数据库从Microsoft Access,DB2,MySQL,Oracle和SAP ASE迁移到SQL Server。
过程2:使用SSIS
您还可以使用SQL Server Integration Services(SSIS)包进行迁移。
通过“导入/导出”向导创建SSIS程序包,并将其运行到命令行中。