2
對於批量插入,我們通常更喜歡BATCH操作。它如何優化以便更快地插入jdbc?在JDBC中批量插入
對於批量插入,我們通常更喜歡BATCH操作。它如何優化以便更快地插入jdbc?在JDBC中批量插入
通常,通過減少網絡往返。例如,如果要使用100個不同的綁定變量組執行相同的語句100次,那麼將所有100組綁定變量同時發送到數據庫並使用單個數據庫取回所有100個結果會更有效率網絡往返比爲了按順序執行每個查詢會引起100次單獨的網絡往返。如果您告訴JDBC驅動程序要創建批處理,則驅動程序可以最小化與數據庫通信所需的次數。
此外,我認爲特別是Oracle JDBC驅動程序應用一些更多的優化,因爲使用批量插入時的速度幾乎匹配SQL * Loader的速度。但我不知道究竟是什麼讓它變得如此快速。 – 2012-04-16 06:57:48
@a_horse_with_no_name,我有點好奇,知道這種優化。它是否真的發生在數據庫端?我想知道的是,說你有兩個數據庫說甲骨文和MySQL.If我在這兩個數據庫中運行相同的查詢性能會有所不同。 – UVM 2012-04-16 07:02:32
@a_horse_with_no_name - 如果您有一批'INSERT'語句,但我很可能會看到Oracle JDBC驅動程序正在執行直接路徑加載,但這很難做到透明。只需通過減少網絡往返次數和批量綁定綁定變量即可獲得傳統路徑的SQL * Loader類性能。 – 2012-04-16 07:10:07