[英]What is more efficient INSERT command or SQL Loader for bulk upload - ORACLE 11g R2
作為新流程要求的一部分,我們將創建表格,其中包含大約3000-4000條記錄。 我們在txt文件上以純文本形式提供這些記錄的副本。
在表格中加載這些記錄給我留下了兩個選擇
使用shell腳本生成包含這些記錄的INSERT語句的SQL文件
使用SQL Loader。
在占用數據庫資源方面,上述兩個選項中的哪一個最有效,在要執行此操作的客戶端服務器上的利用率。
我確實知道記錄的數量相當小,但我們可能不得不用更多的記錄(接近60,000)重復這個活動,在這種情況下,我希望從一開始就配置最好的選項。
SQL*Loader
是更有效的方法。 它為您提供更多控制。 你有一個選項do DIRECT
load和NOLOGGING
,這將減少重做日志的生成,並且當索引被禁用時(作為直接加載的一部分),加載會更快。 缺點是,如果負載中斷,索引將unusable
。
但是,考慮到優勢, SQL*Loader
是最好的方法。 當你擁有數百萬條記錄並且並行運行如此多的加載作業時,你會感受到不同之處。 我聽到DBA抱怨日志大小,當我們進行CONVENTIONAL INSERT
語句加載時,有200多個此類作業並行運行。 數據量越大,您在性能上看到的差異就越大。
SQL * Loader比數千個單獨的INSERT
語句更有效。 但是,即使有60,000行,這兩種方法都應該在幾秒鍾內完成。
在您提到的兩個選項中,SQL * Loader絕對是最佳選擇 - 更快,更高效。
但是,我會選擇另一種方法 - 外部表格 。 擁有SQL * Loader的所有好處,並允許您將外部csv文件視為普通數據庫表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.