mysql生成百万级数量测试数据

    今天因为项目需要,想测试一下读取百万级数量数据的速度如何,无奈数据库没有现成符合要求的数据,网上百度一番有很都不错的文章,但是需要涉及到一些存储过程和用php代码什么的,虽说可以实现,但是感觉另外再弄这些比较麻烦,没有通用性,于是在几篇文章的参考下,.自己写了一段代码,直接生成的数据还是比较方便的,并且不是重复的数据.网上很多都是重复的,我只是做了一点小的修改,测试数据库是mysql 5.5,存储形式是MyISAM,每次生成的数据量是之前的一倍.测试的量有限,如有什么疑问欢迎评论指正.

        首先我的生成table的代码如下:

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`username_`  bigint(255) NOT NULL AUTO_INCREMENT ,
`id_`  varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL ,
`password_`  varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL ,
PRIMARY KEY (`username_`)
)
ENGINE=MyISAM
DEFAULT CHARACTER SET=latin1 COLLATE=latin1_swedish_ci
AUTO_INCREMENT=4345501

;

        这里应该可以看到我的测试主键是username_,设置的是自动增加.

  数据表设计完成之后需要插入一条数据,比方说随便插入个(1,1,1),这里就不再多提.

  接下来就是和其他的博客所不同的了,直接贴出代码如下:

INSERT INTO USER (id_, password_) 
SELECT
    MD5(Rand()),
    RAND() 
FROM
     USER

  插入的内容直接替换成了md5函数所生成的字符串,当然这里可以用其他的生成函数,或者一时间为随机数种子什么的,或者直接用sbustr直接截取需要的长度都行,根据需要自行发挥就好.直接运行几次就可以达到想要的数据量,我测试的时候10w数据生成时间在1s左右,100w数据生成的时间在20s以内.具体时间如下如下:

Affected rows: 131072
Time: 1.237s


Affected rows: 1048576
Time: 11.436s


Affected rows: 2097152
Time: 33.112s

  下面简单展示一下数据的效果:

8539769    b7dd0b3c4c05c24c17ffbac782380bfa    0.33960725678094406
8539770    76375a066cb84d6917f10f995e3bcab4    0.8744977376186268
8539771    96f64ceebae73c8ad8c70c8454c5e8de    0.5589919803282172
8539772    a6227053399504e8e43f2f270c7c6867    0.7503682642712893
8539773    499e38f691698a8dc9d6b09d8196a348    0.22606947480334852
8539774    f6707b6ba5613bbc976b0b0cd5608694    0.5420059194248225
8539775    87210a1472a3a0ac0a2fb267be926d29    0.2634874724442954
8539776    3a5160cd046a685d6c5bc1d7eb0df006    0.12820897822101504
8539777    873ca65bf8f16cf625cafe66157beb80    0.0645836108034324
8539778    7db474aa795bc426d96fcc227b85acd4    0.07320807787888504
8539779    0b7e470834663bf483b29879cf92d263    0.8097012590707291
8539780    4d87498d6b55d9e4be89cb49f5a2baa1    0.7254514980366933
8539781    17886ec3f1b8a74abccb5b6907ce418a    0.49626740766341554
8539782    56d0a73f1b7b8ae5e4108d1e1c0fc66a    0.9000175398774608
8539783    5771ffc3dd277f0f90bf70e9e50bdeac    0.6339268653038208
8539784    c6dd5f6242b1467b37e7a7754b49a93a    0.9444528584782527
8539785    b287343de15669e13c58783e0bdab87e    0.2392627999552179
8539786    fd216a8220ca4cf01cf354185d7f3670    0.04591774944767146
8539787    078ed0041a8d3c5cd80da0949f1e49c5    0.7190723165116015
8539788    b4df3c411abfbcad9b133f961aa0d205    0.24911454529419033
8539789    45c80eb49d90ac37383f27b3237391a7    0.26152578858800773
8539790    6917c5ccd8b46d2a76752b3eb3d94e45    0.7269593521272385
8539791    1100438096f9a168a9a64b0e2d5c47af    0.45849586972826706
8539792    cd605186ba36701ef566179b286ab04b    0.16878763229473273
8539793    9b1978f674244e393aafa57ce56c9c31    0.08050246264832324
8539794    29381a8b22bb91ff1bd0339b195b1d32    0.010458376268351801
8539795    90924c96c8ecf6b68a11eb67cd97ea38    0.47418726186658
8539796    4958f79ccfa8ae806870da3cb223f00d    0.9154328656526588
8539797    3fb17b3aafe4c17ecb6bafdc7e2d5fd2    0.12553936720410303
8539798    95ed08bbdb31dcc9aba57330fdab5160    0.14635246260683282
8539799    78993b5fac11a8bc35d68422d4ac06d0    0.6508427612957012
8539800    0b7ace71592830815a30fff7caa039db    0.048840577759631514
8539801    9f6d9871ba97d74d4ba78640ee596fd2    0.07038640237449334
8539802    aaded281f2d0057b578a52ae7c58f074    0.8977767218814946
8539803    e968a6d036fcca9abca2b9d9ef905a2a    0.42428037098076227

  参考的一些文章列举在下面,如果有什么更好的建议也随时欢迎联系wangkun.it@qq.com. 

  mysql中迅速插入百万条测试数据的方法 - MokeyChan - 博客园   http://www.cnblogs.com/endtel/p/5404065.html   mysql 快速生成百万条测试数据 - 小哈-whzhaochao - CSDN博客   http://blog.csdn.net/whzhaochao/article/details/49126037   用一条SQL快速生成10万条测试数据 - SQL Server(mssql)数据库栏目 - 红黑联盟   http://www.2cto.com/database/201109/103397.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏idba

死锁案例之九

死锁,其实是一个很有意思也很有挑战的技术问题,大概每个DBA和部分开发同学都会在工作过程中遇见 。关于死锁我会持续写一个系列的案例分析,希望能够对想了解死锁的朋...

15030
来自专栏杨建荣的学习笔记

分区表的一个持续改进方案(r9笔记第53天)

今天看到一个同事发了一封邮件,是关于分区的,他说目前某个表的分区需要添加,为了保险起见,让我先添加三年的。这里折射出几个问题。 1.如果没有这位开发同学提醒,我...

32140
来自专栏java一日一条

MySQL 性能优化的最佳 20+ 条经验

今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我 们程序员需要去关注的...

11630
来自专栏Linyb极客之路

MYSQL性能优化

今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事...

16930
来自专栏java一日一条

MySQL 性能优化的最佳 20+ 条经验

今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我 们程序员需要去关注的...

6120
来自专栏PHP在线

MySQL性能优化的21条经验

1. 为查询缓存优化你的查询 大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的。当有很多相同的查询被...

32980
来自专栏机器学习AI算法工程

50多条实用mysql数据库优化建议

1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 缺省情况下建立的索引是非群集索引,但有时它并不是最...

68560
来自专栏Linyb极客之路

MySQL索引优化分析

为什么你写的sql查询慢?为什么你建的索引常失效?通过本章内容,你将学会MySQL性能下降的原因,索引的简介,索引创建的原则,explain命令的使用,以及ex...

23540
来自专栏13blog.site

Spring+SpringMVC+MyBatis+easyUI整合优化篇(十三)数据层优化-表规范、索引优化

本文提要 最近写的几篇文章都是关于数据层优化方面的,这几天也在想还有哪些地方可以优化改进,结合日志和项目代码发现,关于数据层的优化,还是有几个方面可以继续修改的...

35280
来自专栏Java爬坑系列

【MySQL疑难杂症】如何将树形结构存储在数据库中(方案二 Path Enumeration)

  今天来介绍把树形结构存入数据库的第二种方法——路径枚举法。   还是借用上一篇的栗子,为了方便大家查阅,我把图又原样搬过来了。 image.png   需...

31380

扫码关注云+社区

领取腾讯云代金券