zoukankan      html  css  js  c++  java
  • mysql构建一张百万级别数据的表信息测试

    表信息:

    CREATE TABLE dept( /*部门表*/
    deptno MEDIUMINT   UNSIGNED  NOT NULL  DEFAULT 0,  /*编号*/
    dname VARCHAR(20)  NOT NULL  DEFAULT "", /*名称*/
    loc VARCHAR(13) NOT NULL DEFAULT "" /*地点*/
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;
    
    
    CREATE TABLE emp
    (empno  MEDIUMINT UNSIGNED  NOT NULL  DEFAULT 0, /*编号*/
    ename VARCHAR(20) NOT NULL DEFAULT "", /*名字*/
    job VARCHAR(9) NOT NULL DEFAULT "",/*工作*/
    mgr MEDIUMINT UNSIGNED NOT NULL DEFAULT 0,/*上级编号*/
    hiredate DATE NOT NULL,/*入职时间*/
    sal DECIMAL(7,2)  NOT NULL,/*薪水*/
    comm DECIMAL(7,2) NOT NULL,/*红利*/
    deptno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0 /*部门编号*/
    )ENGINE=MyISAM DEFAULT CHARSET=utf8 ;
    
    CREATE TABLE salgrade
    (
    grade MEDIUMINT UNSIGNED NOT NULL DEFAULT 0,
    losal DECIMAL(17,2)  NOT NULL,
    hisal DECIMAL(17,2)  NOT NULL
    )ENGINE=MyISAM DEFAULT CHARSET=utf8;
    
    测试数据
    
    INSERT INTO salgrade VALUES (1,700,1200);
    INSERT INTO salgrade VALUES (2,1201,1400);
    INSERT INTO salgrade VALUES (3,1401,2000);
    INSERT INTO salgrade VALUES (4,2001,3000);
    INSERT INTO salgrade VALUES (5,3001,9999);
    

    为了存储过程能够正常执行,我们需要把命令执行结束符修改

    delimiter $$

    set global log_bin_trust_function_creators=TRUE;

    MySQL创建随机字符串函数:

    DROP FUNCTION IF EXISTS rand_string;
    DELIMITER $$
    CREATE FUNCTION rand_string(n INT)
    RETURNS VARCHAR(255)
    BEGIN
        DECLARE chars_str varchar(100) DEFAULT 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
        DECLARE return_str varchar(255) DEFAULT '';
        DECLARE i INT DEFAULT 0;
        WHILE i < n DO
            SET return_str = concat(return_str,substring(chars_str , FLOOR(1 + RAND()*62 ),1));
            SET i = i +1;
        END WHILE;
        RETURN return_str;
    END $$
    DELIMITER ;
    

     随机数函数:

    DELIMITER $$
    CREATE FUNCTION rand_num()
    RETURNS INT(5)
    BEGIN
    DECLARE i INT DEFAULT 0;
    SET i = FLOOR(10+RAND()*500);
    RETURN i;
    END $$
    DELIMITER ;
    

     存储过程:

    DELIMITER $$
    create procedure insert_emp(in start int(10),in max_num int(10))
    begin
    declare i int default 0; 
    #set autocommit =0 把autocommit设置成0
     set autocommit = 0;  
     repeat
     set i = i + 1;
     insert into emp values ((start+i) ,rand_string(6),'SALESMAN',0001,curdate(),2000,400,rand_num());
      until i = max_num
     end repeat;
       commit;
     end $$
    DELIMITER ;
    

     调用存储过程:

    call insert_emp(100001,10000000);
    

     wampserver中开启mysql慢查询:

    slow-query-log=On 
    ;linux中配置路径 
    ;slow_query_log_file=/data/mysql/log/mysql_slow_query.log 
    windows中配置路径 
    slow_query_log_file=E:mysql_slow_query.log 
    long_query_time=2 
    log_queries_not_using_indexes = ON
    
    第一句是开启慢查询 
    第二句是用来定义慢查询日志的路径 
    第三句是用来定义查过多少秒的查询算是慢查询,我这里定义的是2秒 
    第四句就是记录下没有使用索引的query
    
  • 相关阅读:
    monaco editor
    javascript for of 和 for in 在数组和对象中的区别
    django rest 版本控制器
    学习
    day 22
    day 21
    day20
    day21 数据处理自我小结
    day20 【手写数字识别】之数据处理(搬运)
    day19 通过极简方案快速构建手写数字识别模型 (百度飞浆搬运)
  • 原文地址:https://www.cnblogs.com/mracale/p/9197759.html
Copyright © 2011-2022 走看看