慢查询日志
用于记录MYsql种响应时间超过阈值
打开慢日志
show variables ‘%slow_query-log%’
临时开启
set global slow_query_log = 1
关闭服务
永久开启
/etc/my.cnf [mysqlD]
修改日志
慢查询阈值 ,临时设置和永久设置,改完之后重新登录后生效,不需要重启服务
long_query_time = 3
select sleep(4)休眠4秒
show global status like ‘%slow_queries%’
查看慢查询日志文件 cat …
自带
mysqldumpslow --help 筛选,查找慢日志文件(返回数据最多,访问次数最多,包含左外连接)
分析数据库海量数据(a,b)
a,模拟海量数据
存储过程(无return)、存储函数(有return)
需求:
产生随机数,随机字符串
randstring(6) ->adacva 模拟名称 字符串从1开始
存储函数:
delimiter $ --防止语义报错--结束符号
create function randstring(n int) returns varchar(255)
begin
declare all_str varchar(100) default 'adadsadwfwvvwfwafafaf'
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$
开启了慢查询日志编写存储过程或者存储函数就会报这个错误。
临时解决和永久解决(设置参数变量和修改配置文件)
create functuin ran_num() returns int(5)
begin
declare i int default 0;
set i = floor (rand()*100)l
return i;
end$
–通过存储过程插入海量数据
create procedure insert_emp(in eid_start int(10),int data_time int(10))
begin
declare i int default 0;
set autocommit = 0;
repeat
insert into emp values(eid_start +i,randstring(5),'other',rutn_num());
set i = i+1;
util i = data_times
end repeat;
end $
—调用存储过程和函数实现模拟海量数据
call insert_num()
b,分析海量数据
(1)show profiles;–默认关闭
会记录profiling打开后的语句全部sql执行时间 duration代表总共花费的时间
(2)–精确分析:sql诊断
show profile all for query 第几条
all 可以替换为你希望看见的关键部分时间花费
例如:cpu,等
(3)全局查询日志:记录开启之后的全部sql语句(只在调优的时候打开)
set gloobal general_log =1
set global log_output = ‘table’
会被记录mysql.general_log表中
(分析) select * from mysql.general.log