数据库压力测试--MySQL数据库快速插入大量数据_高自强的博客的博客-程序员秘密

技术标签: 数据  压力测试  mysql  数据库  

一、前言

应本次数据库压力测试的要求,测试数据记录至少为千万级,所以,问题来了,如何快速插入大量数据.

二、解决方法一

第一种解决方法是在MySQL终端中实现的,具体方法如下.
a.打开MySQl数据库;

mysql -u root -p

b.创建数据库;

mysql> create database insertData;

use insertData;

create CREATE TABLE InsertTable (
`id` int(11) NOT NULL auto_increment,
`name` varchar(50) default NULL,
PRIMARY KEY (`id`)
) ENGINE=MEMORY DEFAULT CHARSET=utf8;(PS:本数据库为MySQl的内存数据库)

c.创建插入数据的“函数”;

mysql> delimiter @//可实现多行命令的输入,作用很大
create procedure insert_InsertTable(in item integer)//类似于函数参数列表
begin
declare counter int;
set counter = item;
while counter >= 1 do
insert into myisam values(counter,concat('Record.',counter));
set counter = counter - 1;
end while;
end
@

d.调用该函数(比如插入10 000 000条测试数据);

delimiter @//不可省
call insert_InsertTable(100);
@

e.然后使用命令查看是否成功插入数据;

select count(*) from InserTable;

三、解决方法二

通过使用可知,上文中的方法一显然太过于麻烦,现在考虑将上文中的InsertTable函数写到一个.sql文件,直接调用命令就能实现将数据插入MySQL数据库.将数据库的创建、数据表的创建、数据的插入一步实现
具体实现如下:
a.创建.sql文件insert_data.sql;

drop database if exists insertData;
create database insertData;
use insertData;

SET max_heap_table_size = 1024*1024*2000;//必要的配置,为MySQL分配更大的内存,便于存储
CREATE TABLE InsertTable (
`id` int(11) NOT NULL auto_increment,
`name` varchar(50) default NULL,
PRIMARY KEY (`id`)
) ENGINE=MEMORY DEFAULT CHARSET=utf8;


delimiter @
create procedure insert_InsertTable(in item integer)
begin
declare counter int;
set counter = item;
while counter >= 1 do
insert into InsertTable values(counter,concat('Record.',counter));
set counter = counter - 1;
end while;
end
@

delimiter @
call insert_InsertTable(10000000);
@

b.调用.sql文件;

mysql -u root -p <insert_data.sql

c.查数据是否插入;

select count(*) from InsertTable;

四、其他问题

4.1imiter @ @的作用
可以实现在终端执行多次命令,避免回车的影响.
4.2查看存储数据量命令

select count(*) from InserTable;

4.3删除数据表中的数据命令

truncate TableName;
或者
delete from TableName;

五、待优化问题

5.1如何插入随机数
5.2如何插入多种数据类型的数据
5.3如何插入多条字段的数据

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_33429968/article/details/53089171

智能推荐

Android开发环境搭建,Activity生命周期,五大布局_android开发环境及生命周期_luckydog1024的博客-程序员秘密

1.Linux内核层 – (C\C++)函数库– 应用程序框架 – 应用程序 2.Eclipse环境 eclipseIDE,AndroidSDK(安卓开发工具包),ADT(安卓开发工具,eclipse插件,谷歌已经停止更新).eclipse安装ADT插件,关联AndroidSDK 一般下整合包 3.Android studio环境 Android studio–AndroidSDK

如何通过cmd命令远程重启或远程关闭Windows服务器_远程命令重启windows服务器_areyouookk的博客-程序员秘密

一、想要远程控制服务器,前提条件是远程服务器需要开启IPC$ ,且本地能访问远程服务器445端口1.开启ipc$net share IPC$2.如果只指定管理员才有执行ipc$的权限net share IPC$ /unlimited /grant:administrators,full二、在cmd下使用以下命令远程重启服务器,提示“拒绝访问”,一般是由于没有权限导致的shutdown /m \192.168.74.129 -r -f -t 0192.168.74.129: 拒绝访问。(5)三

SpringMVC 学习笔记(九) 自定义拦截器_胡小海丶的博客-程序员秘密

Spring MVC也可以使用拦截器对请求进行拦截处理,用户 可以自定义拦截器来实现特定的功能,自定义的拦截器必须实现HandlerInterceptor接口① preHandle():这个方法在业务处理器处理请求之前被调用,在该方法中对用户请求 request 进行处理。如果程序员决定该拦截器对请求进行拦截处理后还要调用其他的拦截器,或者是业务处理器去进行处理,则返回true;如果程序员决定不需要再调用其他的组件去处理请求,则返回false。② postHandle():这个方法在业务处理器处理完请求

解决 HTTP重定向请求失败 的问题_http重定向失败_Naola2001的博客-程序员秘密

.Net Web开发中的 "HTTP重定向请求失败" 错误在WEB开发中偶尔碰到,不知如何解决,一般的办法是删除本地所有WEB程序,重新从VSS服务器得到最新版。基于问题的原因一直不清楚。最近工作需要,要保留现有版本,不能从服务器得最新版本。使得解决这个问题尤为必要了。mode="On" 改为 RemoteOnly 问题解决待丰富...等等 有MM找我聊天

logger(一):C++ & logger模块配置及开发_1>loggertestdlg.cpp_wenmoxiao的博客-程序员秘密

该logger模块是一种本地缓存形式的logger处理方法:用于相关软件开发过程中的日志记录;适用于windows和linuxLinux下的主要使用的是syslog-ng库

C语言判断黑色星期五_whoareyou_123456的博客-程序员秘密

注释:在西方,星期五和数字13都代表着坏运气,两个不幸的个体最后结合成超级不幸的一天。所以,不管哪个月的十三日又恰逢星期五就叫“黑色星期五”#include #include #include "math.h" int main() {int num,i; int result=0;int date[50][2]={0};int a[13]={0,1

随便推点

Key already registered with the same priority: GroupSpatialSoftmax解决方法_zack2019的博客-程序员秘密

项目场景:解决Key already registered with the same priority: GroupSpatialSoftmax解问题描述:因为conda源下载不稳定,我在换版本pytorch版本时使用了pycharm直接安装了pytorch1.5.0随后无论我跑哪个程序都是以下错误Key already registered with the same priority: GroupSpatialSoftmax原因分析:原因是conda安装和pycharm安

松下FP系列PLC以太网modbusTCP通讯_松下fp系列modbus地址计算器_工业网络专家的博客-程序员秘密

松下FP系列PLC以太网modbusTCP通讯摘要BCNet-FP针对松下PLC以太网通讯处理器,用于松下FP-XH、FP-X、FP-X0、FP0、FP0R、FP2SH等系列PLC,BCNet-FP模块内部集成ModbusTCP通讯服务器,可不用PLC内编写通讯程序;关键词松下PLC ModbusTCP 以太网通讯 数据采集 通讯口升级ModbusTCP客户机(如支持ModbusTCP的组态软件、OPC服务器、PLC以及实现ModbusTCP客户机的高级语言开发的软件等),可以直接访问松下FP-X

java web ee_Java EE 6 Web配置文件。 在云上。 简单。_dnc8371的博客-程序员秘密

java web ee Java SE还可以。 Java EE是邪恶的。 这就是我一直想的。 好吧,现在不再了。 让我分享我的经验。 几周前,我开始考虑将旧版spring + hibernate + tomcat应用程序移植到新平台上: SAP NetWeaver云 。 我知道您在极客那里的想法:这篇文章越来越糟。 它从Java EE开始,不完全是一个怪胎,而现在进入SAP ...

maven编译时Failure executing javac, but could not parse the error:的错误_Lucian-wgy的博客-程序员秘密

&lt;plugin&gt; &lt;artifactId&gt;maven-compiler-plugin&lt;/artifactId&gt; &lt;version&gt;2.3.2&lt;/version&gt; &lt;configuration&gt; &lt;source&gt;1.7&lt;/source&gt; &lt;target&...

那些喜欢打听薪资的人,最后都去了哪里_程序员小跃的博客-程序员秘密

那些喜欢打听薪资的人,最后都去了哪里文 |明哥首发|明哥的江湖(ID:code_gg_home)这天小赵在楼梯口抽烟,我也在,只瞧得老王踅了过来,顺手把楼梯门掩了起...

什么是主密钥、工作密钥、会话密钥、PIN密钥?_KJFantasy的博客-程序员秘密

什么是主密钥?主秘钥,即(Terminal Master Key) TMK,主要作用是用来验证工作秘钥是否合法,以及加密TPK(终端PIN密钥),保证TPK在传输线路上的安全性。一般情况下是人工在POS设置或者通过IC卡导入,TMK被写入密钥保护芯片,也就是我们说的SE,其具有开机程序自毁功能,能很好的保护TMK的安全性,主秘钥是和每一台POS相关联的,即主秘钥和Pos设备是一一对应的,如我们现...