python快速生成mysql千万级测试数据

背景

在开发过程中,我们会做性能测试,但有些性能测试只有数据量达到一定程度的才能更好的测试出来。为此我们需要特意研究如何快速的生成千万级乃至亿级别的数据。

数据生成思路

  • 利用python生成千万级的txt文本数据
  • 将txt文本数据通过mysql的 load data infile语句导入到数据库中,这中方式非常高效,快到一千万的数据两分钟搞定,当然这取决于你每行的数据量。
  • 接下来就可以享受海量数据的体验啦。

生成千万级txt文本

在别的教程中,有用存储过程、临时内存表的方式,实现快速生成数据。我个人认为有以下不足

  • 生成数据真实性不高
  • 生成数据关联灵活性不高

如果利用python脚本,我们可以非常灵活的通过脚本代码来实现生成数据之间的关系与分布,而且我们可以利用pyton的一个开源的faker库,来生成各种看着不那么假的名字、地址、手机号、邮件等。git地址:faker

目标

我们模拟一个微博动态的一个过程,其中包含用户表,用户关注表,以及微博动态表。我们需要分析在一个用户有上百万的粉丝,微博动态的查询优化。

生成五百万用户数据

本来想用faker模拟真实数据,但是生成性能太低了,节约时间就暂时随意一点,空了会写个基于numpy的高性能随机

创建用户表

CREATE TABLE `user`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NULL,
  `email` varchar(255) NULL,
  `phone` varchar(20) NULL,
  PRIMARY KEY (`id`)
);

python脚本生成(耗时66s)

import os
from datetime import datetime


def build_data(file_path, data_count):
    if os.path.exists(file_path):
        os.remove(file_path)

    file = open(file
  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值