大数据量迁移的一些心得
大数据量迁移的一些心得
最近迁移了一个大约30G的SQL SERVER 2000的数据库到DB2 8.1。以下为迁移的工作心得:
1、在大表的迁移中,不要因为图快而先迁移数据然后建立主键索引。因为很有可能系统没有足够的资源完成这样的操作。我在迁移超过400万行记录的表时,等迁移完数据后,再建立Primary Key时,提示资源不足而出错。
2、插入数据可以使用DB2的一个特色功能,一个Insert语句,可以带多个Values。
INSERT INTO T (F1, F2) VALUES (?, ?), (?, ?) , (?, ?), (?, ?), (?, ?)
这样的方式,要比addBatch的方式要快。
3、主表和从表的外键关联问题
例如主表为A,从表为B。
TABLE A (
A1 VARCHAR(50)
)
TABLE B (
B1 VARCHAR(40),
CONSTRAINT Fk_B FOREIGN KEY (B1) REFERENCES A (A1)
)
外键 Fk_B (B1) REFERENCES A (A1)
其中A表数据:
A1
'aa'
'bb'
B表
'Aa'
'bB'
这在SQL Server中,缺省的建库不区分大小写,它是合法的。迁移到DB2中时,由于库是大小写区分,出现错误。
建议:在SQL Server中,我们直接使用区分大小的选项建立数据库,与所有的支持的数据库一致。这样我们的程序更容易发现多数库支持的错误。
4、海量数据库的迁移工作耗时很长,建议以后规划这类工作时,给予更多的时间,否则很容易出现延迟或者无法完成任务的情况。