物化檢視 VS 匯出/匯入 邏輯資料遷移
物化檢視遷移的所需停機時間遠遠小於EXP/IMP的時間。在利用EXP/IMP進行遷移的時候,很頭痛的一個問題就是匯入、匯出的速度。即使採用10g的新功能資料泵EXPDP/IMPDP,速度仍然是匯出、匯入工具的一個比較致命的缺點。幾百G的資料庫採用EXP/IMP或EXPDP/IMPDP方式,停機時間很可能會超過1天,
這對於很多系統都是無法接受的。而對於物化檢視遷移而言,這就是最大的優勢之一。首先要說的是,物化檢視遷移方式並不能明顯的縮短所需的總時間。但是由於
物化檢視可以進行快速重新整理,因此,可以把完全重新整理的步驟放在停機之前進行,這樣只需要在停機的時候進行一次快速重新整理就可以了,極大的縮短了大資料量資料庫
的遷移時間。
物化檢視遷移和EXP都屬於邏輯遷移:但是EXP方式很難對錶的邏輯結構進行修改。如果提前建立表,並使用IGNORE=Y的方式,可以修改表的物理儲存結果,如改變表空間,改變表的分割槽方式等;如果在EXP的時候指定QUERY引數,可以匯出表中的部分記錄,但是這種方式使用方式很有限,只能針對個別的表,否則就要求QUERY語句中的WHERE條件對匯出所涉及的所有表都生效,對於大部分的情況,這是很難做到的。如果要改變邏輯結果,使用EXP就非常困難了,如果新增新的列還好一些,如果要去掉一些列,用EXP的方式基本上不太可能。而上面提到的所有的修改,對於物化檢視方式來說都不是困難的事情,物化檢視方式可以輕鬆的修改基表的結構,建立物化檢視也可以指定行和列。
當然,物化檢視遷移方式也不是盡善盡美的,這種方式也存在很多的缺點,比如跨版本的bug問題,如果刨除bug不談,那麼物化檢視遷移方式至少會面臨以下問題:
首先,物化檢視遷移是表和資料的遷移,而EXP則是資料庫中所有物件的遷移,因此使用物化檢視遷移方式,必須手工處理索引、約束、過程、觸發器、物件、序列、同義詞、檢視、資料庫鏈以及物件的授權。對於一個大型資料庫環境,這些要手工處理這些工作,工作量可想而知。一個相對簡單的處理方法是,物化檢視與EXP/IMP配合使用,通過EXP匯出所有的物件,只是不包含表中的記錄,表中的記錄通過物化檢視的功能進行同步。不過這樣還需要在物化檢視同步之後,檢查兩個資料庫中所有物件的是否一致,避免丟失源環境中EXP之後做出的修改。總而言之,使用物化檢視遷移方式,遷移的複雜程度要遠遠超過使用EXP的方式。
其次,物化檢視遷移對錶結構有一定的要求。首先,為了保證遷移後目標資料庫中仍然是表,不會變成物化檢視,必須採用ON PREBUILT方式建立物化檢視。而這種方式建立的物化檢視必須是基於主鍵的,這就要求基表必須包括主鍵。對於不包括主鍵的表,是沒有辦法採用物化檢視方式進行遷移的。
物化檢視遷移和EXP都屬於邏輯遷移:但是EXP方式很難對錶的邏輯結構進行修改。如果提前建立表,並使用IGNORE=Y的方式,可以修改表的物理儲存結果,如改變表空間,改變表的分割槽方式等;如果在EXP的時候指定QUERY引數,可以匯出表中的部分記錄,但是這種方式使用方式很有限,只能針對個別的表,否則就要求QUERY語句中的WHERE條件對匯出所涉及的所有表都生效,對於大部分的情況,這是很難做到的。如果要改變邏輯結果,使用EXP就非常困難了,如果新增新的列還好一些,如果要去掉一些列,用EXP的方式基本上不太可能。而上面提到的所有的修改,對於物化檢視方式來說都不是困難的事情,物化檢視方式可以輕鬆的修改基表的結構,建立物化檢視也可以指定行和列。
當然,物化檢視遷移方式也不是盡善盡美的,這種方式也存在很多的缺點,比如跨版本的bug問題,如果刨除bug不談,那麼物化檢視遷移方式至少會面臨以下問題:
首先,物化檢視遷移是表和資料的遷移,而EXP則是資料庫中所有物件的遷移,因此使用物化檢視遷移方式,必須手工處理索引、約束、過程、觸發器、物件、序列、同義詞、檢視、資料庫鏈以及物件的授權。對於一個大型資料庫環境,這些要手工處理這些工作,工作量可想而知。一個相對簡單的處理方法是,物化檢視與EXP/IMP配合使用,通過EXP匯出所有的物件,只是不包含表中的記錄,表中的記錄通過物化檢視的功能進行同步。不過這樣還需要在物化檢視同步之後,檢查兩個資料庫中所有物件的是否一致,避免丟失源環境中EXP之後做出的修改。總而言之,使用物化檢視遷移方式,遷移的複雜程度要遠遠超過使用EXP的方式。
其次,物化檢視遷移對錶結構有一定的要求。首先,為了保證遷移後目標資料庫中仍然是表,不會變成物化檢視,必須採用ON PREBUILT方式建立物化檢視。而這種方式建立的物化檢視必須是基於主鍵的,這就要求基表必須包括主鍵。對於不包括主鍵的表,是沒有辦法採用物化檢視方式進行遷移的。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26277071/viewspace-713377/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料泵匯出匯入物化檢視(ORA-39083)
- 達夢資料庫遷移資料/複製表/匯入匯出2資料庫
- MongoDB 資料遷移 備份 匯入(自用)MongoDB
- 用exp、imp遷移包含物化檢視日誌的資料
- sqoop資料匯入匯出OOP
- Oracle 資料匯入匯出Oracle
- 資料泵匯出匯入
- Oracle資料匯入匯出Oracle
- phpMyAdmin匯入/匯出資料PHP
- Docker容器中的備份、恢復、遷移、匯入、匯出Docker
- 資料庫邏輯遷移方案資料庫
- 資料庫 MySQL 資料匯入匯出資料庫MySql
- Oracle資料庫匯入匯出。imp匯入命令和exp匯出命令Oracle資料庫
- MySQL入門--匯出和匯入資料MySql
- db2匯出資料庫定義及遷移資料DB2資料庫
- ClickHouse學習系列之八【資料匯入遷移&同步】
- Mongodb資料的匯出與匯入MongoDB
- oracle資料匯出匯入(exp/imp)Oracle
- 匯入和匯出AWR的資料
- EasyPoi, Excel資料的匯入匯出Excel
- Mysql 資料庫匯入與匯出MySql資料庫
- PostgreSQL邏輯備份恢復--pg_dump匯出及psql匯入案例SQL
- Oracle資料泵匯出匯入(expdp/impdp)Oracle
- 【最佳實踐】MongoDB匯出匯入資料MongoDB
- SQL資料庫的匯入和匯出SQL資料庫
- Oracle資料泵的匯入和匯出Oracle
- 複雜「場景」資料匯入匯出
- ClickHouse 資料表匯出和匯入(qbit)
- [Docker核心之容器、資料庫檔案的匯入匯出、容器映象的匯入匯出]Docker資料庫
- MongoDB--Mongodb 中資料匯出與匯入MongoDB
- PHP大資料xlswriter匯入匯出(最優資料化)PHP大資料
- 【DB寶50】Oracle異構平臺遷移之完全可傳輸匯出匯入Oracle
- 非常簡單的匯出 CSV 表格邏輯
- 資料庫的物化檢視資料庫
- SQLServer匯出匯入資料到MySQLServerMySql
- mongodb使用自帶命令工具匯出匯入資料MongoDB
- QZpython匯入匯出redis資料的實現deuPythonRedis
- 使用Dbeaver 進行資料的匯入和匯出
- 使用VUE+SpringBoot+EasyExcel 整合匯入匯出資料VueSpring BootExcel