MySQL insert 插入优化技巧,MySQL 优化学习第8天

举报
梦想橡皮擦 发表于 2022/03/23 23:08:57 2022/03/23
【摘要】 本篇博客主要优化 MySQL 中的插入操作,核心实现 insert 优化任务。 插入数据 ** load data infile 导入数据** 使用上述命令,可以大幅度提高批量插入数据。 如果希望使用...

本篇博客主要优化 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

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。