大批量插入数据如何优化
1.對于 MyISAM 類型的表,可以通過以下方式快速的導入大量的數(shù)據(jù)。
ALTER TABLE tblname DISABLE KEYS; LOAD DATA LOCAL INFILE '/usr/share/dict/words' INTO TABLE source_words(word); ALTER TABLE tblname ENABLE KEYS;這兩個命令用來打開或者關(guān)閉 Myisam 表非唯一索引的更新。在導入大量的數(shù)據(jù)到一個非空的 MyISAM 表時,通過設(shè)置這兩個命令,可以提高導入的效率。對于導入大量數(shù)據(jù)到一個空的 MyISAM 表,默認就是先導入數(shù)據(jù)然后才創(chuàng)建索引的,所以不用進行設(shè)置。
2. 而對于 InnoDB類型的表,這種方式并不能提高導入數(shù)據(jù)的效率。對于 InnoDB 類型的表,我們有以下幾種方式可以提高導入的效率:
a. 因為 InnoDB類型的表是按照主鍵的順序保存的,所以將導入的數(shù)據(jù)按照主鍵的順序排列,可以有效的提高導入數(shù)據(jù)的效率。如果 InnoDB表沒有主鍵,那么系統(tǒng)會默認創(chuàng)建一個內(nèi)部列作為主鍵,所以如果可以給表創(chuàng)建一個主鍵,將可以利用這個優(yōu)勢提高導入數(shù)據(jù)的效率。
b. 在導入數(shù)據(jù)前執(zhí)行
關(guān)閉唯一性校驗,在導入結(jié)束后執(zhí)行
SET UNIQUE_CHECKS=1;恢復唯一性校驗,可以提高導入的效率。
c. 如果應(yīng)用使用自動提交的方式,建議在導入前執(zhí)行
關(guān)閉自動提交,導入結(jié)束后再執(zhí)行
SET AUTOCOMMIT=1;打開自動提交,也可以提高導入的效率。
總結(jié)
以上是生活随笔為你收集整理的大批量插入数据如何优化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: STP(四)
- 下一篇: 用Android访问本地站点---(lo