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表中;
我们曾如此渴望生命的波澜,到后来才发现,人生最曼妙的风景是内心的淡定与从容