本篇博客主要优化 MySQL 中的插入操作,核心实现 insert 优化任务。

插入数据

** load data infile 导入数据**
使用上述命令,可以大幅度提高批量插入数据。
如果希望使用该命令,可以用 show 命令进行测试

show variables like '%infile%'

使用批量插入
如果希望一次性插入多条数据,可以使用一条 insert 语句,然后拼接多行数据。

insert into 表名 values(...),(...),(...)

禁用唯一检查
在插入数据时,可以临时取消唯一性校验,具体办法是在插入前执行下述命令

set unique_checks = 0

插入完毕之后在打开

set unique_checks = 1

禁用外键检查
与上述逻辑一致,相关命令如下所示。

set foreign_key_checks = 0
set foreign_key_checks = 1

禁止自动提交
禁止事务自动提交

set autocommit = 0
set autocommit = 1

禁用索引
临时性关闭索引

alter table 表名 disable keys

执行完毕打开索引

alter table 表名 enable keys

从配置的角度进行修改

bulk_insert_buffer_size 缓存大小,默认 8M,可以提高。

show variables like 'bulk_insert%'

这个参数只能对 MyISAM 使用, innodb 无效。

max_allowed_packet 接受的数据包大小,默认为 16M,可以提高。

show variables like 'max_all%'

net_buffer_length 通信时缓存数据的大小,最小4k,最大16M,默认是1M。

show variables like 'net_buffer_length'

其它可学习内容

尽量在事务中进行插入操作
MySQL 默认每次进行 insert 操作时,都会创建一个事务,所以我们提前将批量插入操作放置到事务中,可以提高效率。

START TRANSACTION;
insert into 表名 values(...),(...),(...);
insert into 表名 values(...),(...),(...);
insert into 表名 values(...),(...),(...);
COMMIT;

感兴趣的化 订阅一下 《Python爬虫120》 吧

橡皮擦的第 595 篇原创博客。

MySQL insert 插入优化技巧,MySQL 优化学习第8天相关推荐

  1. Mysql批量插入数据问题解决和优化

    Mysql批量插入数据问题解决和优化 一.问题描述 项目中mysql批量插入大概50000左右数据,使用事务和批量,但是速度依旧很慢,大约60s左右,迫切希望改进这个问题. 二.问题原因 尽管是批量a ...

  2. MySQL INSERT插入条件判断:如果不存在则插入

    我们经常需要进行sql的批量插入,要求:该条记录不存在则插入,存在则不插入.如果使用一条INSERT语句实现呢? 对于普通的 INSERT 插入,如果想要保证不插入重复记录,我们只有对某个字段创建唯一 ...

  3. c mysql 批量插入_c#之mysql四种带事务批量插入

    前言 对于像我这样的业务程序员开发一些表单内容是家常便饭的事情,说道表单 我们都避免不了多行内容的提交,多行内容保存,自然要用到数据库,如果循环打扰我数据库,数据库也会觉得很累,从而增加数据库服务器压 ...

  4. mysql insert 字符集_有关 MySQL 字符集的注意事项-爱可生

    本文关键字:字符集.建库建表 一.数据库和字符集 1. 建库时指定 创建数据库时,显式指定字符集和排序规则,同时,当切换到当前数据库后,参数 character_set_database,collat ...

  5. 【详解】模型优化技巧之优化器和学习率调整

    目录 PyTorch十大优化器 1 torch.optim.SGD 2 torch.optim.ASGD 3 torch.optim.Rprop 4 torch.optim.Adagrad 5 tor ...

  6. mysql insert插入的3种方法

    测试表student的字段 1.插入一条数据 INSERT INTO student(sid,sname,sage,ssex) VALUES(1,"wangdali",18,0); ...

  7. Python连接MySQL insert插入语句

    连接数据库 import pymysqlconn = pymysql.Connect(host='127.0.0.1', port=3306,user='root',password='123456' ...

  8. mysql数据库插入datetime_往MySQL数据库datetime类型字段中插入数据库的当前时间

    代码: StringBuilder sb = new StringBuilder(); sb.append(" insert into uosdetailfile ("); sb. ...

  9. mysql源生插入数据_php+mysql源生连接数据库和增删改查数据

    php+mysql源生连接数据库和增删改查数据 新建一个init.php文件,执行链接数据库.内容如下 header("Content-type: text/html; charset=ut ...

最新文章

  1. RBL, UBL, Uboot的关系
  2. 在 Mac 安装Docker
  3. 北京内推 | ​百度自然语言处理部内容理解方向招收NLP算法实习生
  4. 统计学习方法第四章课后习题(转载+重新排版+自己解读)
  5. 芯片工程师成长之路_实施工程师的成长之路 | 来自咸职厚溥17级学姐的分享
  6. Android 开发之ViewPage官方文档学习笔记
  7. 【Google】谷歌搜索高级用法:包括指定文件类型
  8. App Store榜单优化:App出海必须掌握的ASO技巧
  9. 个人网页制作(教你制作简单网页)
  10. iOS Bilibili/ijkplayer 集成与使用
  11. 一战封神快速升级攻略
  12. iPhone 录音如何去除背景杂音增强录音品质
  13. Pycharm使用tkinter
  14. 全球教育ERP系统软件行业调研及趋势分析报告
  15. Lua 闭包实现pairs和ipairs
  16. pyflink执行任务问题总结
  17. 百度App iOS工程化实践: EasyBox破冰之旅
  18. LV.5 进程、线程和进程间通信
  19. pycharm中python代码格式化方法
  20. 人人车CEO李健发布内部信 称合伙人总数突破千人

热门文章

  1. windows蓝屏错误小全
  2. html 预览 base64 PDF
  3. Hadoop Yarn ResourceManager启动失败
  4. 计算机游戏动漫制作自我鉴定,动画制作专业自我鉴定范文
  5. # 工欲善其事必先利其器-C语言拓展--嵌入式C语言(九)
  6. 技术干货:工欲善其事,必先利其器 阿里云数据库系列谈之一
  7. 360极速浏览器扩展 文件夹 在哪
  8. IT人必看!2018年上半年云栖大会300份干货PPT免费开放!最前沿的技术都在这了!...
  9. android 输入法全屏,android 输入法不全屏
  10. 用js做购物界面的常用效果