插入数据时,影响插入速度的主要是索引,唯一性校验,一次插入的数据条数等等。
插入数据的优化,不同的存储引擎优化手段不一样,在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数据库优化请参考我的其他文章