mysql海量数据分析profiles

 1) 插入海量数据;

  通过存储函数插入海量数据:

  (1)产生随机字符串

delimiter $

  create function randstring(n int)  returns varchar(255)
  begin 
    declare all_str varchar(100) default 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQ' ;
    declare return_str varchar(255) default '';
    declare i int default 0;
    while i < n 
      do   
        set return_str = concat( return_str ,  substring( all_str, FLOOR(1+rand()*52), 1)  ) ;
        set i = i + 1;
      end while;
      return return_str;
  end $

  (2)产生随机整数

create function ran_num () returns int(5)
begin
        declare i int default 0;
        set i = floor(rand()*100);
         return i;
end $;

  

 通过存储过程插入海量数据,

 

create procedure insert_emp(in eid_start int(10), in data_times int(10))
begin
    declare i int default 0;
    set autocommit  = 0;
    repeat 
        insert into emp values(eid_start+i,randstring(5),'other',ran_num);
        set i = i+1;
        until i=data_times
        end  repeat;
     commit; end$

  执行:call   insert_emp(1000,8000)$;

 

通过profiles分析海量数据:

  1.查看mysql数据库配置,查看profiles是否打开;默认是关闭状态

    show variables like ‘%profiles%’;

·  2:设置profiles开启:

    set profiles on;

  3. show profiles ;  会记录了所有的profiles之后的所有查询记录以及查询所花费的时间;但是只能看到io,Cpu一共消费的时间,不够精确;

         

   4.-- 精确分析: sql诊断

    show profile all for  query  id;

   5.看全局的查询日志:记录开启之后的全部sql语句。(这次全局的记录操作只需要在开发过程或者调优打开即可,最终部署的时候一定要关闭)

    show variables like '%general_log%'

    打开全局日志:set global general_log = 1;

           set global log_output='table';

           开启全局日志(开启后,会记录所有sql)。会被记录到mysql.general_log表中; 

posted @ 2019-03-03 19:13  zlAdmin  阅读(484)  评论(0)    收藏  举报