1.数据库调优的流程:
1.1.调优思考流程:
- 1.对数据库进行调优的时候,我们可以依据以下步骤进行思考:
- 整个流程划分成了观察 (Show status) 和行动 (Action) 两个部分。
- 字母 S 的部分代表观察(会使用相应的分析工具)
- 字母 A 代表的部分是行动(对应分析可以采取的行动)
1.2.详细解释上面的图:
我们可以通过观察了解数据库整体的运行状态,通过性能分析工具可以让我们了解执行慢的 SQL 都有哪些,查看具体的 SQL 执行计划,甚至是 SQL 执行中的每一步的成本代价,这样才能定位问题所在,找到了问题,再采取相应的行动
- 1.首先在 S1 部分,我们需要观察服务器的状态是否存在
周期性的波动
。如果存在周期性波动有可能是周期性节点的原因,比如双十一、促销活动等。这样的话,我们可以通过 A1 这一步骤解决,也就是加缓存,或者更改缓存失效策略。 - 2.如果缓存策略没有解决,或者不是周期性波动的原因,我们就需要进一步
分析查询延迟和卡顿的原因
。接下来进入 S2 这一步,我们需要开启慢查询
。慢查询
可以帮我们定位执行慢的 SQL 语句。我们可以通过设置long_query_time
参数定义“慢”的阈值,如果 SQL 执行时间超过了 long_query_time,则会认为是慢查询。当收集上来这些慢查询之后,我们就可以通过分析工具对慢查询日志进行分析。 - 3.在 S3 这一步骤中,我们就知道了执行慢的 SQL,这样就可以针对性地用 EXPLAIN 查看对应 SQL 语句的执行计划,或者使用 show profile 查看 SQL 中每一个步骤的时间成本。这样我们就可以了解 SQL 查询慢是因为执行时间长,还是等待时间长。
- 4.如果是 SQL 等待时间长,我们进入 A2 步骤。在这一步骤中,我们可以
调优服务器的参数
,比如适当增加数据库缓冲池等。如果是 SQL 执行时间长,就进入 A3 步骤,这一步中我们需要考虑是索引设计的问题?还是查询关联的数据表过多?还是因为数据表的字段设计问题导致了这一现象。然后在这些维度上进行对应的调整。 - 5.如果 A2 和 A3 都不能解决问题,我们需要考虑
数据库自身的 SQL 查询性能是否已经达到了瓶颈
,如果确认没有达到性能瓶颈,就需要重新检查,重复以上的步骤。如果已经达到了性能瓶颈,进入 A4 阶段,需要考虑增加服务器,采用读写分离的架构,或者考虑对数据库进行分库分表,比如垂直分库、垂直分表和水平分表
等。 - 6.以上就是数据库调优的流程思路。如果我们发现执行 SQL 时存在不规则延迟或卡顿的时候就可以采用分析工具帮我们定位有问题的 SQL,这三种分析工具你可以理解是 SQL 调优的三个步骤:
慢查询、EXPLAIN 和 SHOW PROFILING
1.3.总结概括图:
2.MySQL调优的性能参数:
2.1.参数查看的语法:
1.在 MySQL 中,可以使用 SHOW STATUS 语句查询一些数据库服务器的性能参数、 执行频率。 SHOW STATUS 语句语法如下:
SHOW [GLOBAL|SESSION] STATUS LIKE '参数';
2.2.性能参数的含义:
2.3.案例分析:
- 1.例如,查询 MySQL 服务器的连接次数,则可以执行如下语句:
SHOW STATUS LIKE 'Connections';