1.创建数据表
create database testdata;
use testdata;
create table dept(
dno int(5) primary key default 0,
dname varchar(20) not null default '',
loc varchar(30) default ''
)engine=innodb default charset=utf8;
create table emp(
eid int(5) primary key ,
ename varchar(20) not null default '',
job varchar(20) not null default '',
deptno int(5) not null default 0
)engine=innodb default charset=utf8;
2.通过存储函数 插入海量数据
创建存储函数(随机字符串)
---模拟员工名称
delimiter $
create function randstring( n int) returns varchar(255) begin declare all_str varchar(100) default 'abcdefghijklmnopqrstuvwxyzABCDEFJHIJKLMNOPQRSTUVWXYZ'; 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 $;
--产生随机整数
delimiter $
create function ran_num() returns int(5)
begin
declare i int default 0;
set i=floor(rand()*100);
return i;
end $;
存储过程插入海量数据:emp表中
delimiter $
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 $;
存储过程插入海量数据:dept表中
delimiter $
create procedure insert_dept(in dno_start int(10) , in data_times int(10))
begin
declare i int default 0;
set autocommit = 0;
repeat
insert into dept values(dno_start+i,randstring(6),randstring(6));
set i=i+1;
until i=data_times
end repeat;
commit;
end $;
删除储存过程:DROP PROCEDURE insert_dept;
插入数据
call insert _emp(1000,800000);
call insert_dept(10,30);
3.分析海量数据:profiles
show profiles;--默认关闭
show variables like '%profiling%';
set profiling=on;
show profiles;会记录所有profile打开之后的全部sql查询语句
--精确分析,sql诊断
show profile all for query 上步查询的Query_id
show profile cpu,block,io for query 1;
--全局查询日志,记录开启之后 的全部sql语句(耗费性能)
show variables like '%general_log%';
set global general_log=1; --开启全局日志
set global log_output='table';--设置将全部的sql记录在表中
set global general_log=on;
set global log_output='file';
set global general_log_file='/tmp/general.log';--设置将全部的sql记录在文件中
记录的sql位置:mysql.general_log表中。
select * from mysql.general_log;
感谢博主,喝杯咖啡~
还没有人发表评论