MySQL insert 插入优化技巧,MySQL 优化学习第8天
本篇博客主要优化 MySQL 中的插入操作,核心实现 insert 优化任务。
插入数据
** load data infile
导入数据**
使用上述命令,可以大幅度提高批量插入数据。
如果希望使用该命令,可以用 show
命令进行测试
show variables like '%infile%'
- 1
使用批量插入
如果希望一次性插入多条数据,可以使用一条 insert 语句,然后拼接多行数据。
insert into 表名 values(...),(...),(...)
- 1
禁用唯一检查
在插入数据时,可以临时取消唯一性校验,具体办法是在插入前执行下述命令
set unique_checks = 0
- 1
插入完毕之后在打开
set unique_checks = 1
- 1
禁用外键检查
与上述逻辑一致,相关命令如下所示。
set foreign_key_checks = 0
set foreign_key_checks = 1
- 1
- 2
禁止自动提交
禁止事务自动提交
set autocommit = 0
set autocommit = 1
- 1
- 2
禁用索引
临时性关闭索引
alter table 表名 disable keys
- 1
执行完毕打开索引
alter table 表名 enable keys
- 1
从配置的角度进行修改
bulk_insert_buffer_size
缓存大小,默认 8M,可以提高。
show variables like 'bulk_insert%'
- 1
这个参数只能对 MyISAM
使用, innodb
无效。
max_allowed_packet
接受的数据包大小,默认为 16M,可以提高。
show variables like 'max_all%'
- 1
net_buffer_length
通信时缓存数据的大小,最小4k,最大16M,默认是1M。
show variables like 'net_buffer_length'
- 1
其它可学习内容
尽量在事务中进行插入操作
MySQL 默认每次进行 insert
操作时,都会创建一个事务,所以我们提前将批量插入操作放置到事务中,可以提高效率。
START TRANSACTION;
insert into 表名 values(...),(...),(...);
insert into 表名 values(...),(...),(...);
insert into 表名 values(...),(...),(...);
COMMIT;
- 1
- 2
- 3
- 4
- 5
感兴趣的化 订阅一下 《Python爬虫120》 吧
橡皮擦的第 595 篇原创博客。
文章来源: dream.blog.csdn.net,作者:梦想橡皮擦,版权归原作者所有,如需转载,请联系作者。
原文链接:dream.blog.csdn.net/article/details/122650951
- 点赞
- 收藏
- 关注作者
评论(0)