博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
11.查询截取分析_慢查询日志
阅读量:6160 次
发布时间:2019-06-21

本文共 2876 字,大约阅读时间需要 9 分钟。

SQL优化分析 过程 

  1.观察,至少跑一天。看看生产的慢SQL情况

  2.开启慢查询日志,设置阙值,比如超过5秒钟的就是慢SQL,并将它抓取出来

  3.explain + 慢SQL分析

  4.show profile

  5.运维经理 or DBA ,进行数据库调优

总结:

  1.慢查询的开启并捕获

  2.explain + 慢查询分析

  3.show profile 查询SQL在MySQL服务器里面的执行细节和生命周期情况

  4.SQL数据库服务器参数调优

 

慢查询日志  (当某条SQL的执行时间大于阙值,会被记录到日志文件中 )

  1.查看与开启慢查询日志

    SHOW  VARIABLES  LIKE  '%show_query_log%';

    set  global  slow_query_log = 1;

  2.查看与开启阙值时间(需重新连接)  

    SHOW  VARIABLES  LIKE  '%long_query_time%';

    set  global  long_query_time = 1;

  3.查询当前系统有多少条慢查询记录

    show global status like '%slow_queries%';

 

日志分析工具  mysqldumpslow

  查看 mysqldumpslow的帮助信息

    s:按何种方式排序

    c:访问次数

    t:查询时间

    ......

mysqldumpslow -s c -t 10 日志文件    得到指定的慢查询日志中的访问次数最多的10个 慢 SQL

 

批量数据脚本

  

#1.建表dept

create table dept(
id int unsigned primary key auto_increment,
deptno mediumint unsigned not null default 0,
dname varchar(20) not null default "",
loc varchar(13) not null default ""
) engine=innodb default charset=gbk;
#2.建表emp
create table emp(
id int unsigned primary key auto_increment,
empno mediumint unsigned not null default 0,
ename varchar(20) not null default "",
job varchar(9) not null default "",
mgr mediumint unsigned not null default 0,
hiredate DATE not null,
sal decimal(7,2) not null,
comm decimal(7,2) not null,
deptno mediumint unsigned not null default 0
) engine=innodb default charset=gbk;
#3.设置参数 'log_bin_trust_function_creators';
show variables like 'log_bin_trust_function_creators';
set global log_bin_trust_function_creators = 1;
#4.创建函数(随机产生字符串)
delimiter $$
create function rand_string(n int) returns varchar(255)
begin
declare chars_str varchar(100) default 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM';
declare return_str varchar(255) default '';
declare i int default 0;
while i < n do
set return_str = concat(return_str,substring(chars_str,FLOOR(1+RAND()*52),1));
SET i = i + 1;
end while;
return return_str;
end $$
#(用于随机产生部门编号)
delimiter $$
create function rand_num()
returns int (5)
begin
declare i int default 0;
set i = floor(100 + rand()*10);
return i;
end $$
#5.创建存储过程
#(往emp表中插入数据的存储过程)
delimiter $$
create procedure insert_emp(in start int(10),in max_num int(10))
begin
declare i int default 0;
set autocommit = 0;
repeat
set i = i + 1;
insert into emp (empno,ename,job,mgr,hiredate,sal,comm,deptno) values ((start + i),rand_string(6),'salesman',0001,curdate(),2000,400,rand_num());
until i = max_num
end repeat;
commit;
end $$

#(往dept表中插入数据的存储过程)

delimiter $$
create procedure insert_dept(in start int(10),in max_num int(10))
begin
declare i int default 0;
set autocommit = 0;
repeat
set i = i + 1;
insert into dept (deptno,dname,loc) values ((start + i),rand_string(10),rand_string(8));
until i = max_num
end repeat;
commit;
end $$
#6.调用存储过程(先插部门表,再插员工表)
delimiter ;
call insert_dept(100,10);
call insert_emp(100001,500000);

 

函数和存储过程的区别:

函数有返回值,存储过程没有返回值

转载于:https://www.cnblogs.com/xuzekun/p/7367781.html

你可能感兴趣的文章
Linux下ftp和ssh详解
查看>>
跨站脚本功攻击,xss,一个简单的例子让你知道什么是xss攻击
查看>>
js时间和时间戳之间如何转换(汇总)
查看>>
js插件---图片懒加载echo.js结合 Amaze UI ScrollSpy 使用
查看>>
java中string和int的相互转换
查看>>
P1666 前缀单词
查看>>
HTML.2文本
查看>>
Ubuntu unity安装Indicator-Multiload
查看>>
解决Eclipse中新建jsp文件ISO8859-1 编码问题
查看>>
7.对象创建型模式-总结
查看>>
【论文阅读】Classification of breast cancer histology images using transfer learning
查看>>
移动端处理图片懒加载
查看>>
jQuery.on() 函数详解
查看>>
谈缓存和Redis
查看>>
【转】百度地图api,根据多点注标坐标范围计算地图缩放级别zoom自适应地图
查看>>
用户调研(补)
查看>>
ExtJS之开篇:我来了
查看>>
☆1018
查看>>
oracle 去掉空格
查看>>
6.13心得
查看>>