插入數據時,影響插入速度的主要是索引,唯一性校驗,一次插入的數據條數等等。
插入數據的優化,不同的存儲引擎優化手段不一樣,在mysql中常用的存儲引擎有,MyISAM 和 InnoDB
· MyISAM是非事物安全類型的,而InnoDB是事物安全型的
· MyISAM鎖的粒度是表級,而InnoDB支持行級鎖定
· MyISAM支持全文類型索引,而InnoDB不支持全文索引
· MyISAM相對簡單,所以效率上要優於InnoDB,小型應用可以考慮使用MyISAM。
· MyISAM表是保存成文件的形式,在跨平臺的數據轉移中使用MyISAM存儲會省去不少麻煩。
· InnoDB表比MyISAM表更安全,可以在保證數據不會丟失的情況下,切換非事務表到事物表(alert table tablename type=innodb)。
如果要執行大量的select可以使用MyISAM,如果大量的insert或update可以使用InnoDB。
MyISAM
禁用索引:ALERT TABLE TABLE_NAME DISABLE KEYS
開啓索引:ALERT TABLE TABLE_NAME ENABLE KEYS
禁用唯一性檢查:SET UNIQUE_CHECKS=0;
開啓文藝性檢查:SET UNIQUE_CHECKS=1;
插入數據時,可以一次插入一條,也可以一次插入多條,插入多條速度更快
使用LOAD DATA INFILE 當需要批量導入數據時,使用LOAD DATA INFILE 語句插入速度快很多。
InnoDB
禁用唯一性檢查 用法和MyISAM一樣
禁用外檢檢查 SET foreign_key_checks=0;
啓動外檢檢查 SET foreign_key_checks=1;
禁止自動提交事務 SET autocommit=0;
開啓自動提交事務 SET autocommit=1;
瞭解更多mysq數據庫優化請參考我的其他文章