分類:見Visio圖mysql
關於大量數據導入是應注意如下幾點:sql
分批導入,導入一批後最後提交(commit),可使用jdbc的(executeBatch)批量處理可是注意它的最大上限,不然只會執行一部分sql語句,超過上限的sql會自動丟棄;數據庫
注意內存使用(不要出現內存益出, Java heap space;併發
儘可能使用大量導入工具(bcp,sqlLoader)來完成(未測試不肯定) ;工具
數據量很大時導入時最好不要作太多的判斷,這樣會影響導入速度;性能
數據量很大時:是在建表時候添加主鍵(假設主鍵不是自增加ID列)後插入數據,仍是插入數據後添加主鍵,前者主要的問題是大量數據插入速度減慢,若是是頻繁的插入操做會致使數據庫奔潰;後者的問題也是大量數據的表添加主鍵(須要刪除重複記錄,並根據mysql本身的添加主鍵機制來處理,速度很慢,並且頻繁的操做也會致使數據庫的奔潰);測試
若是原數據表中有索引,先刪除索引,待到導入數據後再創建索引;(主鍵是惟一索引的特列,這也是 5.中所述的)優化
因爲數據量大的緣由,須要配置mysql的my.ini 文件中相關選項,這個過程當中若是不是很明白各個參數之間的相關關係,則須要一個參數一個參數的修改,從而提升mysql的總體性能;ui
insert 語句的處理而言,用StringBuilder代替「+」其性能是個質的提升;spa
利用jdbc支持的批量插入(preparedstatement),手動控制事務(將插入的數據分割爲屢次提交),從而此番優化的程序可達到多線講程併發高效插入的時效;
使用create table select *from soucre.table 方式建表和show create table tablename方式建表是不相同的,後者創建的表是和原來的表source.table 結構相同的,可是前者的建表方式獲得的表結構是沒有主鍵的;