插入記錄時,影響插入速度的主要是索引、唯一性校驗、一次插入記錄條數等。根據這些情況,可以分別進行優化,本節將介紹優化插入記錄速度的幾種方法。
一.對於myisam引擎表常見的優化方法如下:
1.禁用索引。對於非空表插入記錄時,mysql會根據表的索引對插入記錄建立索引。如果插入大量資料,建立索引會降低插入記錄的速度。為了解決這種情況可以在插入記錄之前禁用索引,資料插入完畢後在開啟索引。禁用索引的語句為: alter table tb_name disable keys; 重新開啟索引的語句為: alter table table_name enable keys; 對於空表批量匯入資料,則不需要進行此操作,因為myisam引擎的表是在匯入資料之後才建立索引的。
2.禁用唯一性檢查:資料插入時,mysql會對插入的記錄進行唯一性校驗。這種唯一性校驗也會降低插入記錄的速度。為了降低這種情況對查詢速度的影響,可以在插入記錄之前禁用唯一性檢查,等到記錄插入完畢之後再開啟。禁用唯一性檢查的語句為: set unique_checks=0; 開啟唯一性檢查的語句為: set unique_checks=1;
3.使用批量插入。使用一條insert語句插入多條記錄。如 insert into table_name values(....),(....),(....)
4.使用load data infile批量匯入 當需要批量匯入資料時,使用load data infile語句匯入資料的速度比insert語句快。
二.對於innodb引擎的表,常見的優化方法如下:
1.禁用唯一性檢查。同myisam引擎相同,通過 set unique_checks=0; 匯入資料之後將該值置1。
2.禁用外來鍵檢查。插入資料之前執行禁止對外鍵的查詢,資料插入完成之後再恢復對外鍵的檢查。禁用外來鍵檢查語句為: set foreign_key_checks=0; 恢復對外鍵的檢查語句為: set foreign_key_checks=1;
3.禁止自動提交。插入資料之前禁止事務的自動提交,資料匯入完成之後,執行恢復自動提交操作。禁止自動提交語句為: set autocommit=0; 恢復自動提交只需將該值置1。
插入速度優化
思路一 加ehcache快取不改變邏輯 未能達到效果 主體思路 實現過程 實現效果 增加ehcache快取 快取的適用場景 本業務中資料的變更大,且對資料庫的操作的頻率過高,從根本上不提倡使用快取 具體問題 1 快取後第一次取資料為 資料庫存入快取展示資料 2 資料未更新讀取資料 快取 不更新 顯示...
提高MySQL插入記錄的速度
在myisam engine下 1.盡量使用insert into table name values 這樣形式插入資料,避免使用inset into table name values inset into table name values inset into table name value...
mysql技巧 提高插入資料 新增記錄 的速度
問題描述 普通台式電腦,採集資料,1000萬資料量。採集回來的資料插入表中的時候很慢,每條約100毫秒。解決方法 1 加大mysql配置中的bulk insert buffer size,這個引數預設為8m bulk insert程式設計客棧 buf 2 改寫所有insert語句為insert de...