mysql性能优化—插入数据的优化(笔记三)

1. 插入数据的优化

插入数据时,影响插入速度的主要是索引、唯一性校验、一次插入的数据条数等。

插入数据的优化,不同的存储引擎优化手段不一样,在MySQL中常用的存储引擎有,MyISAM和InnoDB,两者的区别:

http://www.cnblogs.com/panfeng412/archive/2011/08/16/2140364.html

1.1. MyISAM

1.1.1. 禁用索引

对于非空表插入记录时,MySQL会根据表的索引对插入的记录建立索引如果插入大量数据建立索引会降低插入数据速度

 

为了解决这个问题可以在批量插入数据之前禁用索引数据插入完成后再开启索引

 

禁用索引的语句

ALTER TABLE table_name DISABLE KEYS

 

开启索引语句

ALTER TABLE table_name ENABLE KEYS

 

对于空表批量插入数据则不需要进行操作因为MyISAM引擎的表是在导入数据后才建立索引

1.1.2. 禁用唯一性检查

唯一性校验会降低插入记录的速度可以在插入记录之前禁用唯一性检查插入数据完成后再开启

 

禁用唯一性检查的语句SET UNIQUE_CHECKS = 0;

 

开启唯一性检查的语句:SET UNIQUE_CHECKS = 1;

1.1.3. 批量插入数据

插入数据时可以使用一条INSERT语句插入一条数据也可以插入多条数据

第二种方式的插入速度比第一种方式快

1.1.1. 使用LOAD DATA INFILE

当需要批量导入数据时,使用LOAD DATA INFILE语句INSERT语句插入速度快很多。

1.1. InnoDB

1.1.1. 禁用唯一性检查

用法和MyISAM一样

1.1.2. 禁用外键检查

插入数据之前执行禁止对外键的检查数据插入完成后再恢复,可以提供插入速度。

 

禁用:SET foreign_key_checks = 0;

开启:SET foreign_key_checks = 1;

1.1.3. 禁止自动提交

插入数据之前执行禁止事务的自动提交数据插入完成后再恢复,可以提高插入速度。

 

禁用:SET autocommit = 0;

开启:SET autocommit = 1;

 

posted @ 2019-04-30 08:59  佩奇er  阅读(601)  评论(0编辑  收藏  举报