mysql生成千万级的测试数据

http://blog.csdn.net/dennis211/article/details/78076399

MYSQL打造千万级测试数据

为了更好的测试MYSQL性能以及程序优化,不得不去制作海量数据来测试。我这里的方法就是直接用uuid函数进行分配每条数据的不同内容。

1.首先创建测试表(card表)

[sql] view plain copy

  1. CREATE TABLE `card` (
  2. `card_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT ‘ID‘,
  3. `card_number` varchar(100) DEFAULT NULL COMMENT ‘卡号‘,
  4. PRIMARY KEY (`card_id`)
  5. ) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC

2.创建MYSQL存储过程

[sql] view plain copy

  1. DROP PROCEDURE IF EXISTS proc1;
  2. DELIMITER $$
  3. SET AUTOCOMMIT = 0$$
  4. CREATE  PROCEDURE proc1()
  5. BEGIN
  6. DECLARE v_cnt DECIMAL (10)  DEFAULT 0 ;
  7. dd:LOOP
  8. INSERT  INTO card (card_number) VALUES (UUID());
  9. COMMIT;
  10. SET v_cnt = v_cnt+1 ;
  11. IF  v_cnt = 10000000 THEN LEAVE dd;
  12. END IF;
  13. END LOOP dd ;
  14. END;$$
  15. DELIMITER ;

3.调用存储过程,生成对应的测试数据

[sql] view plain copy

  1. call proc1;

我的机子大概是2分13秒的样子生成完毕,每个人的机子各有不同,生成的时间也会不一样。

4.来测试一下性能吧。

[sql] view plain copy

  1. select * from card order by rand() limit 1;   //6.5秒查询完毕
  2. select * from card where card_number like ‘%xxx%‘; //3.7秒查询完毕

在这样的海量数据情况下,如果用到模糊查询,那肯定会很慢,一般建议用全文检索引擎来替代(如Sphinx),查询速度就完全解决。

原文地址:https://www.cnblogs.com/Simeonwu/p/8337814.html

时间: 2024-10-08 04:33:15

mysql生成千万级的测试数据的相关文章

mysql生成百万级数量测试数据(超简单)

为了验证mysql查询优化,特地生成上上百万条.或者上千万条数据. 1.建表 -- ---------------------------- DROP TABLE IF EXISTS `user_test`; CREATE TABLE `user_test` ( id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键id', `user_name` VARCHAR(255) DEFAULT NULL COMMENT '用户名', `p

MySQL 对于千万级的大表要怎么优化?

https://www.zhihu.com/question/19719997 千万级,MySQL实际上确实不是什么压力,InnoDB的存储引擎,使用的是B+树存储结构,千万级的数据量,基本也就是三到四层的搜索,如果有合适的索引,性能基本也不是问题. 但经常出现的情况是,业务上面的增长,导致数据量还会继续增长,为了应对这方面的问题而必须要做扩展了此时可能首先需要考虑的就是分表策略了. 当然分表,可能还有其它几个原因,比如表变大了,千万级的数据库,为了减少运维成本,降低风险,就想到了通过分表来解决

MySQL 对于千万级的大表要怎么优化

转自知乎 作者:哈哈链接:http://www.zhihu.com/question/19719997/answer/81930332来源:知乎著作权归作者所有,转载请联系作者获得授权. 很多人第一反应是各种切分:我给的顺序是:第一优化你的sql和索引: 第二加缓存,memcached,redis: 第三以上都做了后,还是慢,就做主从复制或主主复制,读写分离,可以在应用层做,效率高,也可以用三方工具,第三方工具推荐360的atlas,其它的要么效率不高,要么没人维护: 第四如果以上都做了还是慢,

Python批量删除mysql中千万级大量数据

场景描述 线上mysql数据库里面有张表保存有每天的统计结果,每天有1千多万条,这是我们意想不到的,统计结果咋有这么多.运维找过来,磁盘占了200G,最后问了运营,可以只保留最近3天的,前面的数据,只能删了.删,怎么删? 因为这是线上数据库,里面存放有很多其它数据表,如果直接删除这张表的数据,肯定不行,可能会对其它表有影响.尝试每次只删除一天的数据,还是卡顿的厉害,没办法,写个Python脚本批量删除吧. 具体思路是: 每次只删除一天的数据: 删除一天的数据,每次删除50000条: 一天的数据删

转载:30多条mysql数据库优化方法,千万级数据库记录查询轻松解决

1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描, Sql 代码 : select id from t where num is null; 可以在 num 上设置默认值 0,确保表中 num 列没有 null 值,然后这样查询: Sql 代码 : select id from t where num=0; 3.应尽量避免在 wh

Mysql千万级大表优化

Mysql的单张表的最大数据存储量尚没有定论,一般情况下mysql单表记录超过千万以后性能会变得很差.因此,总结一些相关的Mysql千万级大表的优化策略. 1.优化sql以及索引 1.1优化sql 1.有索引但未被用到的情况(不建议) (1)避免like的参数以通配符开头时 尽量避免Like的参数以通配符开头,否则数据库引擎会放弃使用索引而进行全表扫描. 以通配符开头的sql语句,例如:select * from t_credit_detail where Flistid like '%0'\G

30个MySQL千万级大数据SQL查询优化技巧详解

本文总结了30个mysql千万级大数据SQL查询优化技巧,特别适合大数据里的MYSQL使用. 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:select id from t wher

Mysql千万级大数据查询优化经验 一点课堂(多岸学院)

提高mysql千万级大数据SQL查询优化30条经验(Mysql索引优化注意) 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:select id from t where num=0

MySQL 百万级分页优化(Mysql千万级快速分页)

以下分享一点我的经验 一般刚开始学SQL的时候,会这样写 : SELECT * FROM table ORDER BY id LIMIT 1000, 10; 但在数据达到百万级的时候,这样写会慢死 : SELECT * FROM table ORDER BY id LIMIT 1000000, 10; 也许耗费几十秒 网上很多优化的方法是这样的: SELECT * FROM table WHERE id >= (SELECT id FROM table LIMIT 1000000, 1) LIM