阅读 122

MySQL-2-如何制造百万千万级+数据

MySQL-2-如何制造百万千万级+数据

1、十分钟单表造:10w,没想到我的机器太差劲了,重点还是单表~

意外,今天想看看SQL存储过程是什么东西,如何制造百万千万级+数据,有它应该也可以的。

突然看到了SQL是和其它编程语言类似...

复制代码

CREATE DEFINER=`root`@`%` PROCEDURE `my_insert`(IN `num` int)BEGIN--   RAND(): 返回0到1内的随机值--   FLOOR():返回小于x的最大整数值
    DECLARE i INT DEFAULT 1;    DECLARE n INT DEFAULT 1;    DECLARE head char(3);-- 3位开头初始值
    DECLARE bodys varchar(100) default "130 131 132 133 134 135 136 137 138 139 186 187 189 151 157";    DECLARE starts int;    DECLARE chars_str varchar(20) DEFAULT '0123456789';    DECLARE return_str varchar(255) DEFAULT '';    DECLARE phone varchar(20);    
    WHILE i <= num DO        
--     生成3位开头
        SET starts = 1+floor(rand()*15)*4;    
        SET head = trim(substring(bodys,starts,3));        
--     生成8位尾号
        WHILE n <= 8 DO            SET return_str = concat(return_str,substring(chars_str , FLOOR(1 + RAND()*10 ),1));            SET n = n +1;            END WHILE;        SET phone = trim(concat(head,return_str));        
--  插入数据
        insert into `user`(uuid,phone,pwd,age,date_time) values(UUID(),phone,PASSWORD(i),FLOOR(RAND()*10),NOW());   
        SET i=i+1;        SET n=1;        SET return_str='';    end while;END

复制代码

2、硬件机器:执行过程中top,显示mysql cpu使用率20%左右

3、数据检查

6个字段,电话号有重复...

4、电话号码字段好多重复:10w里有574

 如果需要唯一这可咋搞?

 可能得用这种方式:3位开头+8位(00000000),从00000001-99999999这样有1千万,如果再结合3位主流开头号码,总共有20个左右,20*1千万,满足了吧?

以3位开头为一个列表,先遍历第一个3位开头,在拼接从00000001-99999999,妥了。

5、还以为uuid也有重复的(不存在的)

UUID由以下几部分的组合: (1)当前日期和时间,UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同。

(2)时钟序列。 (3)全局唯一的IEEE机器识别号,如果有网卡,从网卡MAC地址获得,没有网卡以其他方式获得。 UUID的唯一缺陷在于生成的结果串会比较长。

但是百度百科看到这个还挺厉害的:UUID最少在3000+年内不会重复

服务器评测 http://www.cncsto.com/ 

服务器测评 http://www.cncsto.com/ 

站长资源 https://www.cscnn.com/ 


文章分类
后端
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐