博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql利用存储过程批量插入数据
阅读量:7039 次
发布时间:2019-06-28

本文共 1274 字,大约阅读时间需要 4 分钟。

近期须要測试一下mysql单表数据达到1000W条以上时增删改查的性能。因为没有现成的数据,因此自己构造。本文仅仅是实例。以及简单的介绍。

首先当然是建表:

CREATE TABLE `fortest` (  `ID` INT(30) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,  `IP` VARCHAR(32) NOT NULL,  `OID` VARCHAR(15) DEFAULT NULL)

其次。构建存储过程:

DELIMITER $$USE `插入表所在的数据库名字`$$DROP PROCEDURE IF EXISTS `autoinsert`$$CREATE DEFINER=`root`@`192.168.137.10` PROCEDURE `autoinsert`(IN IP_NUM INT, IN OID_NUM INT)BEGIN  DECLARE iIP INT DEFAULT 0 ;  DECLARE iOID INT DEFAULT 0 ;      WHILE(iIP < IP_NUM)    DO      SET iOID = 0;      WHILE(iOID

上述存储过程指定了两个输入參数:IP_NUM  OID_NUM,两个參数分别指定了有多少台机器,以及每台机器有多少OID。

之后调用存储过程就能够了:

call autoinsert 1000 50

意思是,有100台机器。每一个机器有50个參数。

这样,我们就构建了50000条数据,假设按上述存储过程,想达到1000W的数据。还是要花点时间的。能够採用例如以下方法,进一步提快速度:

首先创建具有相同表结构的表:

CREATE TABLE fortest_2 LIKE fortest;

然后依据fortest表插入5W条数据

INSERT INTOfortest_2(IP,OID) SELECT IP,ROUND(RAND() * 100) + 1) FROM fortest;

上述一条语句运行速度特别快,瞬间就插入了5W条数据。能够写个脚本运行:

#!/bin/bashi=1;MAX_INSERT_ROW_COUNT=$1;j=0;while [ $i -le $MAX_INSERT_ROW_COUNT ]do    time mysql -h192.168.137.1 -uroot -p123456 fortest -e "INSERT INTOfortest_2(IP,OID) SELECT IP,ROUND(RAND() * 100) + 1) FROM fortest;"    echo "INSERT $i "        i=$(($i+1))#    sleep 0.05doneexit 0

本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5268262.html,如需转载请自行联系原作者

你可能感兴趣的文章
Tomcat调优测试
查看>>
iptunnel配置使用
查看>>
CDH5.X安装配置kerberos认证过程
查看>>
Mac Yosemite 10.10 下利用 Launchctl 自启动 mysql
查看>>
ubuntu下的命令学习与汇总--网络管理命令
查看>>
cent os 6.4安装使用mysql
查看>>
我的友情链接
查看>>
python3.x中的urllib模块
查看>>
Spark SQL和DataFrame指南[中英对照]
查看>>
快速了解MYSQL性能优化
查看>>
python list添加元素
查看>>
JavaScript 作用域
查看>>
Bochs下编译安装Linux-0.11版本
查看>>
让tomcat 日志网页中显示
查看>>
Linux Ubuntu 16.04 主机名设置
查看>>
解码,
查看>>
CCNP 静态路由
查看>>
单链表二[不带头节点链表]
查看>>
xml解析——增删改查操作后将其修改结果保存
查看>>
49.C#--多态之抽象类
查看>>