当前位置: 首页 > news >正文

插入数据优化

目录

一.插入数据优化

1.insert语句优化

①批量插入

②手动提交事务

③主键顺序插入

2.大批量插入数据(100万条)

举例

第一步:连接数据库时,加上--local-infile属性

第二步:查看全局参数local_infile的值,如果为0,则需要设置为1

第三步:根据领导给的表结构sql文件,创建表结构

第四步:将领导给的包含100w条数据的sql文件,传入linux虚拟机上

第五步:执行load语句,将100万条数据,从该文件中导入tb_user表中


一.插入数据优化

1.insert语句优化

对于insert语句的方式插入数据,可以从下面三种角度进行insert语句的优化

①批量插入

我们可以一个insert语句,插入多行数据,而不是一个insert语句只插入一行数据。

比如我们数据库需要100条数据,我们可以每个insert语句插入10条数据,写10个insert语句即可。

②手动提交事务

每执行一条insert语句前/后,都会自动开启/提交事务。

比如执行3条insert语句,就会开启3次事务,提交3次事务,很频繁。

因此我们可以在执行insert语句前,开启事务,等到所有insert语句执行完毕后,再统一提交事务即可。

③主键顺序插入

我们使用insert语句插入数据时,可以按照每行数据的主键从小到大插入,这样性能比较好。

2.大批量插入数据(100万条)

举例

需求场景:在公司,领导给你一个包含100万条数据的sql文件和一个表结构sql文件,让你给这100万条数据导入数据库,你如何做?做法如下。

第一步:连接数据库时,加上--local-infile属性

第二步:查看全局参数local_infile的值,如果为0,则需要设置为1

第三步:根据领导给的表结构sql文件,创建表结构
CREATE TABLE `tb_user` (`id` INT(11) NOT NULL AUTO_INCREMENT,`username` VARCHAR(50) NOT NULL,`password` VARCHAR(50) NOT NULL,`name` VARCHAR(20) NOT NULL,`birthday` DATE DEFAULT NULL,`sex` CHAR(1) DEFAULT NULL,PRIMARY KEY (`id`),UNIQUE KEY `unique_user_username` (`username`)
) ENGINE=INNODB DEFAULT CHARSET=utf8 ;

第四步:将领导给的包含100w条数据的sql文件,传入linux虚拟机上

如下图,可见该文件每一行用换行符\n分隔,每一个字段使用逗号分隔,一共100w条数据。

第五步:执行load语句,将100万条数据,从该文件中导入tb_user表中

load data local infile '/root/load_user_100w_sort.sql' into table tb_user fields terminated by ',' lines terminated by '\n';

解读:以上橙色是数据文件在linux磁盘上的位置;紫色是数据库表的名称;蓝色是每一个字段的分隔符;红色是每一行的分隔符。

以上就是使用load语句,向表中导入100w条数据的全部过程。

喜欢本篇文章的话,可以留个免费的关注呦~

http://www.dtcms.com/a/269203.html

相关文章:

  • 镜头OIS系统方案全面解析:从基础原理到前沿应用
  • 【ElasticSearch实用篇-01】需求分析和数据制造
  • Spring Cloud Config(微服务配置中心详解)
  • 七牛云Java开发面试题及参考答案(60道面试题汇总)
  • 华为OD机试 2025B卷 - 最小循环子数组(C++PythonJAVAJSC语言)
  • 【论文笔记】World Models for Autonomous Driving: An Initial Survey
  • 【C++读取输入空格到CHAR数组】2022-7-19
  • 在vue3+ts项目中引入element-plus及其图标
  • 【读代码】深度解析TEN VAD:实时语音活动检测的高性能开源解决方案
  • 从被动救火到主动预测!碧桂园服务以图谱技术重塑IT运维底座
  • 开放端口,开通数据库连接权限,无法连接远程数据库 解决方案
  • Debian 11 Bullseye 在线安装docker
  • Java 命令行参数详解:系统属性、JVM 选项与应用配置
  • axios无感刷新token
  • 万物智联时代启航:鸿蒙OS重塑全场景开发新生态
  • Android kotlin中 Channel 和 Flow 的区别和选择
  • 《Effective Python》第十二章 数据结构与算法——当精度至关重要时使用 decimal
  • 【R语言】Can‘t subset elements that don‘t exist.
  • 学习日记-spring-day42-7.7
  • Java --接口--内部类分析
  • [学习] C语言数学库函数背后的故事:`double erf(double x)`
  • qiankun 微前端框架子应用间通信方法详解
  • 一份多光谱数据分析
  • Spring MVC HandlerInterceptor 拦截请求及响应体
  • [netty5: LifecycleTracer ResourceSupport]-源码分析
  • idea启动后闪一下,自动转为后台运行
  • 全国产化行业自主无人机智能处理单元-AI飞控+通信一体化模块SkyCore-I
  • VmWare 安装 mac 虚拟机
  • 量子计算+AI芯片:光子计算如何重构神经网络硬件生态
  • C++ 定位 New 表达式深度解析与实战教程