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表中;