0
点赞
收藏
分享

微信扫一扫

MySQL知识总结之四种SQL性能分析工具

pipu 2022-03-15 阅读 103

文章目录

MySQL知识总结之四种SQL性能分析工具

1.SQL性能分析

2.查看SQL执行频率

SHOW GLOBAL STATUS LIKE 'Com_______';

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3.慢查询日志

3.1概念

3.2查看慢查询日志变量、文件、时间

SHOW VARIABLES LIKE 'slow_query%';

在这里插入图片描述

SHOW VARIABLES LIKE 'long_query_time';

在这里插入图片描述

3.3.开启慢查询日志

SET GLOBAL slow_query_log=ON;
SET GLOBAL slow_query_log=OFF;

在这里插入图片描述

3.4设置慢查询时间

在这里插入图片描述

在这里插入图片描述

3.5查看慢查询日志文件

在这里插入图片描述

3.6使用慢查询日志

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.7检查慢查询日志

在这里插入图片描述

4.profile详情

4.1profile

4.2查看是否支持profile

SELECT @@have_profiling ;

在这里插入图片描述

4.3查看profile开关

select @@profiling;

在这里插入图片描述

4.4开启profiling

 SET GLOBAL profiling = 1; -- 全局模式
 SET profiling = 1; -- session模式

在这里插入图片描述

4.5使用profile

--提前创建好这个表
create table tb_user(
id int primary key auto_increment comment '主键',
name varchar(50) not null comment '用户名',
phone varchar(11) not null comment '手机号',
email varchar(100) comment '邮箱',
profession varchar(11) comment '专业',
age tinyint unsigned comment '年龄',
gender char(1) comment '性别 , 1: 男, 2: 女',
status char(1) comment '状态',
createtime datetime comment '创建时间'
) comment '系统用户表';
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('吕布', '17799990000', 'lvbu666@163.com', '软件工程', 23, '1',
'6', '2001-02-02 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('曹操', '17799990001', 'caocao666@qq.com', '通讯工程', 33,
'1', '0', '2001-03-05 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('赵云', '17799990002', '17799990@139.com', '英语', 34, '1',
'2', '2002-03-02 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('孙悟空', '17799990003', '17799990@sina.com', '工程造价', 54,
'1', '0', '2001-07-02 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('花木兰', '17799990004', '19980729@sina.com', '软件工程', 23,
'2', '1', '2001-04-22 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('大乔', '17799990005', 'daqiao666@sina.com', '舞蹈', 22, '2',
'0', '2001-02-07 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('露娜', '17799990006', 'luna_love@sina.com', '应用数学', 24,
'2', '0', '2001-02-08 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('程咬金', '17799990007', 'chengyaojin@163.com', '化工', 38,
'1', '5', '2001-05-23 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('项羽', '17799990008', 'xiaoyu666@qq.com', '金属材料', 43,
'1', '0', '2001-09-18 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('白起', '17799990009', 'baiqi666@sina.com', '机械工程及其自动
化', 27, '1', '2', '2001-08-16 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('韩信', '17799990010', 'hanxin520@163.com', '无机非金属材料工
程', 27, '1', '0', '2001-06-12 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('荆轲', '17799990011', 'jingke123@163.com', '会计', 29, '1',
'0', '2001-05-11 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('兰陵王', '17799990012', 'lanlinwang666@126.com', '工程造价',
44, '1', '1', '2001-04-09 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('狂铁', '17799990013', 'kuangtie@sina.com', '应用数学', 43,
'1', '2', '2001-04-10 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('貂蝉', '17799990014', '84958948374@qq.com', '软件工程', 40,
'2', '3', '2001-02-12 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('妲己', '17799990015', '2783238293@qq.com', '软件工程', 31,
'2', '0', '2001-01-30 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('芈月', '17799990016', 'xiaomin2001@sina.com', '工业经济', 35,
'2', '0', '2000-05-03 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('嬴政', '17799990017', '8839434342@qq.com', '化工', 38, '1',
'1', '2001-08-08 00:00:00');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status,
createtime) VALUES ('狄仁杰', '17799990018', 'jujiamlm8166@163.com', '国际贸易',
30, '1', '0', '2007-03-12 00:00:00');
CREATE INDEX idx_user_name ON tb_user(name); --创建的是一般索引
CREATE UNIQUE INDEX idx_user_phone ON tb_user(phone);
CREATE INDEX idx_user_pro_age_sta ON tb_user(profession,age,status);
CREATE INDEX idx_email ON tb_user(email);
DROP INDEX idx_email ON table_name ;

4.5.1查看每条SQL耗时

show profiles; -- 查看每一条SQL的耗时基本情况

在这里插入图片描述

select * from tb_user;
select * from tb_user where id = 1;
select * from tb_user where name = '白起';

在这里插入图片描述
在这里插入图片描述

4.5.2查看指定SQL各阶段耗时

show profile for query query_id; -- 查看指定query_id的SQL语句各个阶段的耗时情况

4.5.3查看指定SQL各阶段CPU使用情况

show profile cpu for query query_id; -- 查看指定query_id的SQL语句CPU的使用情况

在这里插入图片描述

5.explain

5.1使用explain

-- 直接在select语句之前加上关键字 explain / desc
EXPLAIN SELECT 字段列表 FROM 表名 WHERE 条件 ;

在这里插入图片描述

5.2explain字段含义

5.3id字段(id相同情况)

create table student( 
id int auto_increment primary key comment '主键ID', 
name varchar(10) comment '姓名', 
no varchar(10) comment '学号' ) comment '学生表'; 
insert into student values (null, '黛绮丝', '2000100101'),(null, '谢逊', '2000100102'),(null, '殷天正', '2000100103'),(null, '韦一笑', '2000100104'); 

create table course( 
id int auto_increment primary key comment '主键ID', 
name varchar(10) comment '课程名称'
 ) comment '课程表';
insert into course values (null, 'Java'), (null, 'PHP'), (null , 'MySQL') , (null, 'Hadoop'); 

create table student_course( 
id int auto_increment comment '主键' primary key, 
studentid int not null comment '学生ID', 
courseid int not null comment '课程ID', 
constraint fk_courseid foreign key (courseid) references course (id), constraint fk_studentid foreign key (studentid) references student (id) )comment '学生课程中间表'; 
insert into student_course values (null,1,1),(null,1,2),(null,1,3),(null,2,2), (null,2,3),(null,3,4);

在这里插入图片描述

在这里插入图片描述

-- 为student表起别名字s
select s.*,c.* from student s ,course , student_course sc where s.id == sc.studnetid  and c.id = sc.courseid;

在这里插入图片描述

在这里插入图片描述

5.4id字段(id不同情况)

selECt id from course c where c.name ='MySQL';
 select studentid from student_course sc where sc.courseid = 3;
 select * from student s where s.id in (1,2);

SELSECT

在这里插入图片描述
在这里插入图片描述

 select * from student s where s.id in (selECt studentid from student_course sc where sc.courseid =(selECt id from course c where c.name ='MySQL'));

在这里插入图片描述

在这里插入图片描述

5.5type

在这里插入图片描述
在这里插入图片描述

5.6possible_key、key、key_len、rows

举报

相关推荐

0 条评论