在我們開發專案過程中,一般都會遇到大批量的資料匯入。比如根據訂購日誌來生成訂購記錄。經過查詢資料發現了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...