插入数据优化
目录
一.插入数据优化
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条数据的全部过程。
喜欢本篇文章的话,可以留个免费的关注呦~