mysql大量数据插入探讨(量变引起质变)
2019獨角獸企業重金招聘Python工程師標準>>>
?分類:見Visio圖
?關于大量數據導入是應注意以下幾點:
分批導入,導入一批后最后提交(commit),可以使用jdbc的(executeBatch)批量處理但是注意它的最大上限,否則只會執行一部分sql語句,超過上限的sql會自動丟棄;
注意內存使用(不要出現內存益出, Java heap space;
盡量使用大量導入工具(bcp,sqlLoader)來完成(未測試不確定) ;
數據量很大時導入時最好不要做太多的判斷,這樣會影響導入速度;
數據量很大時:是在建表時候添加主鍵(假設主鍵不是自增長ID列)后插入數據,還是插入數據后添加主鍵,前者主要的問題是大量數據插入速度減慢,如果是頻繁的插入操作會導致數據庫奔潰;后者的問題也是大量數據的表添加主鍵(需要刪除重復記錄,并根據mysql自己的添加主鍵機制來處理,速度很慢,而且頻繁的操作也會導致數據庫的奔潰);
如果原數據表中有索引,先刪除索引,待到導入數據后再建立索引;(主鍵是唯一索引的特列,這也是 5.中所述的)
由于數據量大的原因,需要配置mysql的my.ini 文件中相關選項,這個過程中如果不是很明白各個參數之間的相關關系,則需要一個參數一個參數的修改,從而提高mysql的整體性能;
insert 語句的處理而言,用StringBuilder代替“+”其性能是個質的提高;
利用jdbc支持的批量插入(preparedstatement),手動控制事務(將插入的數據分割為多次提交),從而此番優化的程序可達到多線講程并發高效插入的時效;
使用create table select *from soucre.table 方式建表和show create table tablename方式建表是不相同的,后者建立的表是和原來的表source.table 結構相同的,但是前者的建表方式得到的表結構是沒有主鍵的;
?
轉載于:https://my.oschina.net/u/1462678/blog/227170
總結
以上是生活随笔為你收集整理的mysql大量数据插入探讨(量变引起质变)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 浏览器的功能
- 下一篇: [mysql] mysql-myibat