快速造数据库数据

1.pg类
#建表
create table h_test(id bigserial primary key, str1 text,str2 text,str3 text,str4 text,str5 text,str6 text ,str7 text,str8 text,str9 text,str10 text);
#插入10条随机数据,下面的sql重复10次
insert into h_test(str1,str2,str3,str4,str5,str6,str7,str8,str9,str10) values(repeat(md5((random()*10000)::text),20),repeat(md5((random()*10000)::text),20),repeat(md5((random()*10000)::text),20),repeat(md5((random()*10000)::text),20),repeat(md5((random()*10000)::text),20),repeat(md5((random()*10000)::text),20),repeat(md5((random()*10000)::text),20),repeat(md5((random()*10000)::text),20),repeat(md5((random()*10000)::text),20),repeat(md5((random()10000)::text),20))
#重复下面的sql大概23次可以将表做到100G
insert into h_test(str1,str2,str3,str4,str5,str6,str7,str8,str9,str10) select str1,str2,str3,str4,str5,str6,str7,str8,str9,str10 from h_test;
#多开几个窗口,建议同时开4个可以一起,计算你需要制作的数据量,如1T=100G
10。因为开了4个窗口每个窗口创建10/4=2.5个表,每个session准备好create的2到3条语并发跑。
#session1
create table h_test01 as select * from h_test;
create table h_test02 as select * from h_test;
create table h_test03 as select * from h_test;
#session2
create table h_test04 as select * from h_test;
create table h_test05 as select * from h_test;
create table h_test06 as select * from h_test;
#session3
create table h_test07 as select * from h_test;
create table h_test08 as select * from h_test;
#session4
create table h_test09 as select * from h_test;
create table h_test10 as select * from h_test;

2.mysql类造数据
计算需要制作的数据量。以下实验测试的表是1千万的数据 80G。2千万就是160G。
如需要3T的数据 需要表数量 = 3200G / 80 = 40 。大概需要40张表。
建议并发4个窗口,不然容易把物理机io打满影响其他客户的实例。那每个窗口就负责10个表的插入.

第一步:#建表
create table h_test1(id bigint AUTO_INCREMENT primary key, str1 varchar(2000),str2 varchar(2000),str3 varchar(2000),str4 varchar(2000),str5 varchar(2000),str6 varchar(2000) ,str7 varchar(2000),str8 varchar(2000),str9 varchar(2000),str10 varchar(2000));
create table h_test2(id bigint AUTO_INCREMENT primary key, str1 varchar(2000),str2 varchar(2000),str3 varchar(2000),str4 varchar(2000),str5 varchar(2000),str6 varchar(2000) ,str7 varchar(2000),str8 varchar(2000),str9 varchar(2000),str10 varchar(2000));


create table h_test40(id bigint AUTO_INCREMENT primary key, str1 varchar(2000),str2 varchar(2000),str3 varchar(2000),str4 varchar(2000),str5 varchar(2000),str6 varchar(2000) ,str7 varchar(2000),str8 varchar(2000),str9 varchar(2000),str10 varchar(2000));
第二步:#创建存储过程

delimiter $$$
create  procedure batch_insert(in tb_name varchar(250),in row bigint)
begin
declare i int default 0;
declare cnt int;
SET cnt=(row/20);
SET @sqlStmt = CONCAT('insert into ',tb_name,'(str1,str2,str3,str4,str5,str6,str7,str8,str9,str10) values(repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20)),
(repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20)),
(repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20)),
(repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20)),
(repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20)),
(repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20)),
(repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20)),
(repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20)),
(repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20)),
(repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20)),
(repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20)),
(repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20)),
(repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20)),
(repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20)),
(repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20)),
(repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20)),
(repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20)),
(repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20)),
(repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20)),
(repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20),repeat(md5((rand()*10000)),20))');
set i=0;
start transaction;
while i<cnt+1 do
	PREPARE stmt FROM @sqlStmt;
	EXECUTE stmt;
set i=i+1;
if i%10000 =0 
 then
 commit;
 start transaction;
end if;
end while;
commit;
end
$$$
delimiter ;

第三步:#开4个窗口sql,且设置不写入binlog

set sql_log_bin=0;

第四步:4个窗口同时调用存储过程

session1: call batch_insert(‘h_test1’,10000000);call batch_insert(‘h_test2’,10000000)…call batch_insert(‘h_test10’,10000000)
session2:call batch_insert(‘h_test11’,10000000);call batch_insert(‘h_test12’,10000000)…call batch_insert(‘h_test20’,10000000)
session3:call batch_insert(‘h_test21’,10000000);call batch_insert(‘h_test22’,10000000)…call batch_insert(‘h_test30’,10000000)
session4:call batch_insert(‘h_test31’,10000000);call batch_insert(‘h_test32’,10000000)…call batch_insert(‘h_test40’,10000000)

##测试结果:
同时开4个窗口执行存储过程,300G数据 25分钟
3.sqlserver类
#建表
create table h_test(id bigint identity (1,1) primary key, str1 varchar(1024),str2 varchar(1024),str3 varchar(1024),str4 varchar(1024),str5 varchar(1024),str6 varchar(1024) ,str7 varchar(1024),str8 varchar(1024),str9 varchar(1024),str10 varchar(1024));
#插入10条随机数据,下面的sql重复10次
insert into h_test(str1,str2,str3,str4,str5,str6,str7,str8,str9,str10) values(replace(dbo.lzw_getstr(10),‘A’,‘dcdi’),replace(dbo.lzw_getstr(10),‘B’,‘dcdi’),replace(dbo.lzw_getstr(10),‘C’,‘dcdi’),replace(dbo.lzw_getstr(10),‘D’,‘dcdi’),replace(dbo.lzw_getstr(10),‘E’,‘dcdi’),replace(dbo.lzw_getstr(10),‘F’,‘dcdi’),replace(dbo.lzw_getstr(10),‘G’,‘dcdi’),replace(dbo.lzw_getstr(10),‘H’,‘dcdi’),replace(dbo.lzw_getstr(10),‘I’,‘dcdi’),replace(dbo.lzw_getstr(10),‘J’,‘dcdi’))
#重复下面的sql大概10几次可以将表做到18G左右,因为sqlserver日志会占用很大的空间,每个表小一点就可以把事物做小。减少日志空间的占用。
insert into h_test(str1,str2,str3,str4,str5,str6,str7,str8,str9,str10) select str1,str2,str3,str4,str5,str6,str7,str8,str9,str10 from h_test;
#可以通过如下查看数据库,表,日志的大小
exec sp_spaceused ‘h_test’
select name, CAST(convert(float,size) * (8192.0/1024.0)/1024 AS nvarchar)+‘MB’ AS CP from dbo.sysfiles;
dbcc sqlperf(logspace)
#多开几个窗口,建议同时开4个可以一起,计算你需要制作的数据量,如1T=16G*60。因为开了4个窗口每个窗口创建60/4=15个表,每个session准备好create的15条语并发跑。
#session1
select * into h_test01 as select * from h_test;
select * into h_test02 as select * from h_test;

select * into h_test15 as select * from h_test;
#session2
select * into h_test101 as select * from h_test;
select * into h_test102 as select * from h_test;

select * into h_test115 as select * from h_test;
#session3
select * into h_test201 as select * from h_test;
select * into h_test202 as select * from h_test;

select * into h_test215 as select * from h_test;
#session4
select * into h_test301 as select * from h_test;
select * into h_test302 as select * from h_test;

select * into h_test315 as select * from h_test;
4.redis类

#!/bin/bash
        used_memory=1
        maxmemory=xxxx   #定值为最大内存,单位字节
        i=1
        redis_conn="redis-cli -h xxxxx -p 6379 -a Aa123456"
        while (( used_memory < maxmemory  ))
        do
           $redis_conn set key$i aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBAAAAAAAAAaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcccccccccccccccccccccc
           i=$(($i+1))
           used_memory = $(($redis_conn info memory | grep 'used_memory:' | awk -F: '{print $(2)}'))
        done
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值