mysql存储中使用while批量插入数据(批量提交和单个提交的区别)
更新时间:2022年08月17日 11:09:05 作者:刘大大__
这篇文章主要介绍了mysql存储中使用while批量插入数据(批量提交和单个提交的性能差异),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
批量提交
while 语句写法:
while '条件' do 循环体语句; end while;
完整写法
drop procedure if exists test_insert;
delimiter $$
create procedure test_insert(n int)
begin
declare v int default 0;
set AUTOCOMMIT = 0;
while v < n
do
insert into test(second_key, text, field_4,status, create_date)
values ((v*10),
concat('t',v),
substring(md5(rand()), 1, 10),
'good',
adddate('1970-01-01', rand(v) * 10000));
set v = v + 1;
end while;
set AUTOCOMMIT = 1;
end$$
delimiter ;查看、删除存储过程:
mysql> show procedure status like 'test_insert'; mysql> show create procedure test_insert\G; mysql> drop procedure if exists test_insert;
创建表
CREATE TABLE test ( id INT NOT NULL AUTO_INCREMENT, second_key INT, text VARCHAR(20), field_4 VARCHAR(20), status VARCHAR(10), create_date date, PRIMARY KEY (id), KEY idx_second_key (second_key) ) Engine=InnoDB CHARSET=utf8;
插入100万条数据
mysql> call test_insert(1000000); Query OK, 0 rows affected (31.86 sec)
单个提交
完整写法
drop procedure if exists test_insert;
delimiter $$
create procedure test_insert(n int)
begin
declare v int default 0;
while v < n
do
insert into test(second_key, text, field_4,status, create_date)
values ((v*10),
concat('t',v),
substring(md5(rand()), 1, 10),
'good',
adddate('1970-01-01', rand(v) * 10000));
set v = v + 1;
end while;
end$$
delimiter ;插入1万条数据
mysql> call test_insert(10000); Query OK, 1 row affected (1 min 8.52 sec)
打开另一个窗口查看
mysql> select count(*) from test.test; +----------+ | count(*) | +----------+ | 1428 | +----------+ 1 row in set (0.00 sec) mysql> select count(*) from test.test; +----------+ | count(*) | +----------+ | 1598 | +----------+ 1 row in set (0.00 sec) mysql> select count(*) from test.test; +----------+ | count(*) | +----------+ | 1721 | +----------+ 1 row in set (0.00 sec) mysql> select count(*) from test.test; +----------+ | count(*) | +----------+ | 1983 | +----------+ 1 row in set (0.00 sec)
结论
批量提交100万条数据用了30秒,单个提交1万条数据用了1分钟,对比发现,批量提交的效率远大于单个提交的效率
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
MySQL Community Server压缩包安装配置方法
这篇文章主要为大家详细介绍了MySQL Community Server压缩包安装配置方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-11-11
解决Navicat Premium 连接 MySQL 8.0 报错"1251"的问题分析
这篇文章主要介绍了解决Navicat Premium 连接 MySQL 8.0 报错"1251"的问题分析,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-11-11
MySQL使用show effective grants查看权限官方解读
这篇文章主要为大家介绍了MySQL使用show effective grants查看权限,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-07-07
Mysql从5.6.14安全升级至mysql5.6.25的方法
这篇文章主要介绍了Mysql从5.6.14安全升级至mysql5.6.25的方法,本教程讲的非常详细,具有参考借鉴价值,需要的朋友参考下吧2016-08-08


最新评论