數據載入到 Oracle 中的速度異常緩慢
大量(4.000.000+)文件(每個 1-4Mb)被載入到 Oracle 10g 中大約幾天。表分配在大表空間中,該表空間是通過硬體 RAID(Adaptec 3805,8 HDD x 2Tb,RAID 級別 6)在特殊卷(標記為 BIG_VOL)上創建的。
RedoLogs 被移動到另外兩個 SSD 驅動器上。沒有歸檔日誌。BIG_VOL 上只有 DBF 和控製文件。
在每個載入文件後關閉事務(通過 COMMIT)。
性能監視器在寫入此 BIG_VOL 時顯示每秒約 6-9Mb !簡單複制任何大文件顯示每秒大約 80+Mb!
我可以做些什麼來提高速度嗎?
缺少一些有用的資訊,但我的第一種方法是將文件連接成較少數量的大型輸入文件,以減少文件處理成本。查看載入方法並檢查數據配置文件是否支持使用 SQL Loader 直接載入。如果 SQL 載入器不合適,可以使用外部表並將 APPEND 提示添加到 INSERT。
您可以考慮表是如何分區的,以及分區是否反映在文件中,即每個文件都與一個分區相關。這可能會為您提供根據分區標準使負載並行的空間。
以上假設您正在插入數據,但如果您在其中也有更新,那麼我會使用合併語句來獲取外部表。過去,這對我有用 10g。我有一個 shell 腳本根據它對每種載入方法的適用性來載入每個文件。我們在大約 3 到 4 小時內從數百個文件而不是數百萬個文件中載入了多達 8000 萬條記錄。因此,完全猜測每個文件有 100 條記錄,您應該能夠在不到一天的時間內載入它們。
您使用raid 6的任何特殊原因?raid 6 在寫入操作中具有額外的成本,因為它比 raid 5 具有額外的奇偶校驗。此外,表上的索引數量可能會減慢插入速度。
所以回答你的具體問題:“我可以做些什麼來提高速度嗎?” 是的,遠離raid6(到raid 1+0,甚至嘗試使用原始分區的ASM)並減少表上的索引數量。