论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
数据库
›
Oracle
›
MySQL 优化—— SQL 性能分析
MySQL 优化—— SQL 性能分析
雁过留声
金牌会员
|
2023-8-9 21:16:34
|
显示全部楼层
|
阅读模式
楼主
主题
507
|
帖子
507
|
积分
1521
SQL 性能分析
SQL 执行频率
MySQL 客户端连接成功后,通过 show [session | global] status 命令可以提供服务其状态信息。通过下面指令,可以查看当前数据库 CRUD 的访问频次:
SHOW GLOBAL STATUS LIKE 'Com_______'; 七个下划线代表这个七个占位。
查询数据库中整体的 CURD 频次,一般针对 select 比较多的数据库。
慢查询日志
慢查询日志
记录了所有执行时间超过指定参数(long_query_time,单位:秒,默认 10 s)的所有 SQL 语句的日志
。
MySQL 的慢查询日志默认没有开启,需要在 MySQL 的配置文件(/etc/my.cnf)中配置如下信息:
# 开启 MySQL 慢查询日志开关
slow_query_log=1
# 设置慢查询的时间为 2 秒,SQL 语句执行时间操作 2 s,就会视为慢查询,并记录到慢查询日志中。
long_query_time=2
复制代码
配置完成需重启 MySQL 服务器进行测试,查看慢查询日志文件的信息:/var/lib/mysql/localhost-slow.log
查看慢查询日志的开关情况
show variables like 'slow_query_log';
profile 详情
能够在做 SQL 优化时帮助我们了解时间都耗费到哪去了。通过 have_profiling 参数,能够看到当前 MySQL 是否支持 profile 操作:
SELECT @@have_profiling;
默认情况下是关闭的(0),通过 set 语句可以选择在 session/global 级别开启 profile:
SELECT @@profiling;:查看 profiling 是否开启
SET profiling = 1;:开启 profiling
相关操作效果:
# 查看每一条 SQL 的耗时基本情况
show profiles;
# 查看指定 query_id 的 sql 语句各个阶段的耗时情况
show profile for query query_id;
# 查看指定 query_id 的 SQL 语句 CPU 的使用情况
show profile cpu for query query_id;
复制代码
show profiles
\
列分别是:SQL 语句的 id,执行时间秒,具体的 SQL 语句。
show profile for query 25
这条语句在各个状态的耗时详细情况。
show profile cpu for query 79
可以看到具体语句 CPU 的情况。
explain 执行计划
explain 或者 desc 命令获取 MySQL 如何执行 select 语句 的信息,包括 select 语句执行过程中表如何连接和连接顺序。
语法:explain select 语句
explain 具体字段解析:
那么一般情况下重点关注的是以下几个字段:
type:一般业务情况下是优化到 const、ref(如果 type 类型是在后面的话)
possible_keys:可能会用到的索引与实际用到的索引进行对比,看看是否能通过索引来进行优化。
key:实际用到的索引。
key_len:索引的最大长度,越短越好(不丢失精度前提下)。
filtered:值越大越好
Extra:其他信息,也比较重要。
小结:
对于 SQL 性能分析这章,学习了 4 个点:
SQL 执行频率:查看数据库中查询是否执行频率最高。
慢查询日志:查询哪些 SQL 语句超过了规定时间,标记为慢查询。
profile 详情:查看具体的 SQL 语句执行的耗时时间,包括各个阶段的用时以及 CPU 情况。
explain\desc:查看具体 SELECT 执行计划,根据查询到的字段去进行 SQL 优化的方案。
后续将学习 SQL 优化的具体方案,以及不同的 SQL 优化。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
雁过留声
金牌会员
这个人很懒什么都没写!
楼主热帖
Dax函数教程_编程入门自学教程_菜鸟教 ...
嵌入式数据库简介
Spring Boot + URule 规则引擎,可视化 ...
之前很火给女朋友推送微信服务号消息是 ...
【如何优化她】教你如何定位不合理的SQ ...
常用类-LocalDate、LocalTime、LocalDa ...
微服务大行其道的今天,Service Mesh是 ...
Elasticsearch 入门实战(5)--Java API ...
利用WordPress搭建属于自己的网站 ...
万万没想到,除了香农计划,Python3.11 ...
标签云
挺好的
服务器
快速回复
返回顶部
返回列表