海量資料插入資料庫的快速方案

2021-07-10 04:13:20 字數 885 閱讀 5521

在我們開發專案過程中,一般都會遇到大批量的資料匯入。比如根據訂購日誌來生成訂購記錄。經過查詢資料發現了2種比較快速的方法:

方法一   需要對日誌檔案做解析出來的。

public class jdbcmorequick

}pstmt.executebatch();

conn.commit();

pstmt.close();

conn.close();

long end = system.currenttimemillis();

system.out.println(end - start);}}

這種方法插入100w條資料10秒不到。

注意:sql

語句中的 

values 

後面必須要有乙個空格 否則引數rewritebatchedstatements = true

將不會有作用。

還有一點就是引數

useserverprestmts

這個引數可以不用新增,如果新增了其值為

true

的話,那麼當

batch_size

過大時則會丟擲異常!

方法二 直接對日誌檔案操作的不用解析的

public class jdbcfileload

}這種方法和方法一的效果差不多。

注意:資料庫連線驅動的版本盡可能的要高些,

因為低版本不支援方法setlocalinfileinputstream()

。如果是用到框架的話,可以先從容器中獲取乙個session然後去 手動控制連線是否自動提交,這樣的話對於大資料的插入就會輕鬆

很多,希望這對您會有所幫助,如果您有更好的方法,請多多指教!

《海量資料庫解決方案》2011051901

摘抄 表連線的最優化方案 表連線,這裡指狹義的join,是連線資料的最基本方法。表連線方式 a 巢狀迴圈表連線nested loops 既是最傳統的表連線方式,也是最普遍的表連線方式 通過優先許可權處理某個集合來從中獲取常量值,並利用該常量值去對應的集合中查詢滿足連線條件的對應行,所連線數量的多少會...

《海量資料庫解決方案》2011051301

摘抄 表連線的最優化方案 反覆連線方式 之後用於連線 query 的sql要以以前從基表中所讀取的行為基準而被反覆 loop 執行 文中比較nested loops和反覆連線方式,結論是反覆連線方式類似nested loops,只是前者會出現沒有設計出正確的表連線方向 集合順序 而影響了join的速...

《海量資料庫解決方案》2011050301

摘抄 提高區域性範圍掃瞄執行速度的原理 書中提及乙個概念 無條件查詢,按字面理解就行了。如 select from tb 後面不帶任何查詢語句之類的。在書中所說,select from tb order by item 前者可能執行區域性範圍掃瞄,後者執行屬於全部範圍掃瞄 以上,針對的是oracle...