大數(shù)據(jù)量遷移的一些心得
最近遷移了一個大約30G的SQL SERVER 2000的數(shù)據(jù)庫到DB2 8.1。以下為遷移的工作心得:
1、在大表的遷移中,不要因?yàn)閳D快而先遷移數(shù)據(jù)然后建立主鍵索引。因?yàn)楹苡锌赡芟到y(tǒng)沒有足夠的資源完成這樣的操作。我在遷移超過400萬行記錄的表時,等遷移完數(shù)據(jù)后,再建立Primary Key時,提示資源不足而出錯。
2、插入數(shù)據(jù)可以使用DB2的一個特色功能,一個Insert語句,可以帶多個Values。
INSERT INTO T (F1, F2) VALUES (?, ?), (?, ?) , (?, ?), (?, ?), (?, ?)
這樣的方式,要比addBatch的方式要快。
3、主表和從表的外鍵關(guān)聯(lián)問題
例如主表為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表數(shù)據(jù):
A1
'aa'
'bb'
B表
'Aa'
'bB'
這在SQL Server中,缺省的建庫不區(qū)分大小寫,它是合法的。遷移到DB2中時,由于庫是大小寫區(qū)分,出現(xiàn)錯誤。
建議:在SQL Server中,我們直接使用區(qū)分大小的選項(xiàng)建立數(shù)據(jù)庫,與所有的支持的數(shù)據(jù)庫一致。這樣我們的程序更容易發(fā)現(xiàn)多數(shù)庫支持的錯誤。
4、海量數(shù)據(jù)庫的遷移工作耗時很長,建議以后規(guī)劃這類工作時,給予更多的時間,否則很容易出現(xiàn)延遲或者無法完成任務(wù)的情況。