ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

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

2021-07-31 21:35:07  阅读:211  来源: 互联网

标签:20 UUID DEFAULT 千万级 网卡 MySQL varchar DECLARE 百万


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+年内不会重复

 欢迎来大家QQ交流群一起学习:482713805

标签:20,UUID,DEFAULT,千万级,网卡,MySQL,varchar,DECLARE,百万
来源: https://www.cnblogs.com/gsxl/p/15085272.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有