qidao123.com ToB IT社区-企服评测·应用市场
标题:
MySQL(高级特性篇)09章——性能分析工具的利用
[打印本页]
作者:
一给
时间:
2025-11-8 02:11
标题:
MySQL(高级特性篇)09章——性能分析工具的利用
在数据库调优中,我们的目的就是
相应时间更快
,
吞吐量更大
一、数据库服务器的优化步调
当我们遇到数据库调优题目的时间,该怎样思索呢?这里把思索的流程整理成下面这张图
整个流程分别成了
观察
(Show Status)和
办法
(Action)两个部分。字母S的部分代表观察(会利用相应的分析工具),字母A代表的部分是办法(对应分析可以接纳的办法)
可观察数据库团体运行状态,借助性能分析工具找出实行慢的 SQL,检察其实行操持及每一步的本钱代价,以此定位题目,进而接纳相应步伐
详细表明以下这张图:
S1:观察服务器状态
:检察服务器状态是否有
周期性颠簸
,如有,大概由如双十一、促销运动等周期性节点导致,可实验通过
加缓存
或
更改缓存失效计谋
(A1)办理
S2:开启慢查询
:若缓存计谋未办理题目或不存在周期性颠簸,开启
慢查询
。设置 long_query_time 参数界说慢查询阈值,网络慢查询后用分析工具分析慢查询日记,定位实行慢的 SQL 语句
S3:分析慢 SQL
:利用 EXPLAIN
检察慢 SQL 实行操持
,或用 show profile
检察各步调时间本钱
,判断慢是因实行时间长还是等候时间长
A2:调优服务器参数
:若 SQL 等候时间长,
调优服务器参数
,如恰当增长数据库缓冲池
A3:调解 SQL 相干计划
:若 SQL 实行时间长,从
索引计划
、
查询关联数据表数目
、
数据表字段计划
等维度排查并举行对应调解
A4:架构优化
:若 A2 和 A3 都无法办理题目,
判断数据库是否达性能瓶颈
。若已达瓶颈,思量增长服务器、接纳读写分离架构或举行分库分表(如垂直分库、垂直分表、水中分表)。若未达瓶颈,重新查抄并重复上述流程
数据库调优流程思绪为:当实行 SQL 出现不规则延长或卡顿,可借助分析工具定位题目 SQL,重要涉及
慢查询
、
EXPLAIN
和
SHOW PROFILING
这三个 SQL 调优步调
小结:
二、检察体系性能参数
在MySQL中,可以利用
SHOW STATUS
语句查询一些MySQL数据库服务器的性能参数 、实行频率 。SHOW STATUS语句语法如下:
SHOW [GLOBAL|SESSION] STATUS LIKE '参数';
复制代码
一些
常用的性能参数
如下:
三、统计SQL的查询本钱
实行操持选择
:SQL 查询语句
实行前需确定查询实行操持
,若存在多种实行操持,MySQL 会盘算各操持本钱,
选取
本钱最小
的作为终极实行操持
查询本钱检察
:实行完某条 SQL 语句后,可检察当前会话中的
last_query_cost
变量值
获取该查询的本钱
本钱指标作用
:
查询本钱
是评价查询实行服从的常用指标,
其对应 SQL 语句所需读取的
页的数目
我们依然利用第8章的student_info表为例,如果想要查询 id=900001 的记载,然后看下查询本钱,我们可以直接在聚簇索引上举行查找:
然后再检察该语句的本钱,
意味着
实际上我们只必要检索一个页即可
:
如果要查询 id 在 900001 到 9000100 之间的门生记载呢?
然后再看下查询优化器的本钱,这时我们大概必要举行20个页的查询
只管页的数目到达原来的 20 倍,但两个 SQL 查询服从无显着变革、查询时间根本类似。这是由于
接纳次序读取方式一次性将页面加载到缓冲池再查找
,虽 last_query_cost 增长,但借助
缓冲池机制
,未显着增长查询时间
利用场景
:它对于比力开销黑白常有用的,特别是有好几种查询方式可选的时间
从页加载角度得出的 SQL 查询结论
:
位置决定服从
:页在数据库
缓冲池
中时查询服从
最高
;若不在缓冲池,需从内存或磁盘读取,且页在
内存中
的读取服从远高于在
磁盘中
的读取服从
批量决定服从
:从磁盘
随机读取单个页
服从很低(约 10ms),接纳
次序读取方式批量读取页
,可大幅提拔单页匀称读取服从,以致比单个页面在内存中的随机读取还快
应对 I/O 题目无需担心,找对方法可提拔服从:一是
将常用数据只管存于缓冲池
;二是充实利用磁盘吞吐本领,批量读取数据以提拔单页读取服从
四、定位实行慢的SQL:慢查询日记
慢查询日记界说
:MySQL 慢查询日记
用于记载
相应时间高出阈值
的语句
,即运行时间高出
long_query_time
值的 SQL 会被记载此中。long_query_time
默认值为 10
,意味着运行高出 10 秒(不含 10 秒)的语句会被视为慢查询
慢查询日记作用
:资助发现实行时间长的 SQL 查询,有针对性地举行优化,提拔体系团体服从。当数据库服务器出现壅闭、运行变慢等题目时,查抄慢查询日记找到慢 SQL 有助于办理题目,比方可网络实行高出 5 秒的 SQL 并联合
EXPLAIN
分析
慢查询日记开启设置
:默认环境下,MySQL 未开启慢查询日记,需手动设置。
若非调优必要,一样寻常不发起开启,由于
开启会带来肯定性能影响
慢查询日记记载方式
:慢查询日记
支持将日记记载写入文件
(1)开启慢查询日记参数
开启slow_query_log
:
在利用前,必要先看下慢查询是否已经开启,利用下面这条下令即可
能看到slow_query_log=OFF,可以把慢查询日记打开,
留意设置变量值的时间必要利用
global
,否则会报错
再来检察下慢查询日记是否开启,以及
慢查询日记文件的位置
:
能看到这时慢查询分析已经开启,同时文件生存在
/var/lib/mysql/localhost-slow.log
文件中
修改long_query_time阈值
:
接下来看下慢查询的时间阈值设置,利用如下下令(意思是10s):
这里如果想把时间收缩,比如设置为1秒,可以如许设置:
set global long_query_time = 1;这么修改,会对新建的会话起作用。set long_query_time = 1;对当前会话有用
增补
:
设置文件中
一并设置参数
如下的方式相较于前面的下令行方式,可以看作是
永世设置
的方式
修改my.cnf文件,
[mysqld]
下增长或修改参数
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 qidao123.com ToB IT社区-企服评测·应用市场 (https://www.qidao123.com/bbs/)
Powered by Discuz! X3.5