前言

在项目预上线之后,发现有一些SQL执行的很慢,如何排查定位SQL查询慢的原因呢?是索引设计的问题?服务器参数配置的问题?还是需要增加缓存的问题?下面咱们一起就从性能分析来入手,定位导致SQL执行慢的原因。

数据库服务器的优化步骤

当我们遇到数据库调优的问题,该如何思考呢?下面分享一张思考的流程图:

将整个流程划分成观察(Show status)和行动(Action)两个部分。其中字母S的部分代表观察(会使用相应的分析工具),字母A代表的部分是行动(对应分析可以采取的行动)。

调优流程图详解:

1、首先在 S1 部分,我们需要观察服务器的状态是否存在周期性的波动。如果存在周期性波动,有可能是周期性节点的原因,如双十一,促销活动等。这样的话,可以通过 A1 加缓存这一步骤解决,或者更改缓存失效策略。

2、如果缓存策略没有解决,或者不是周期性波动的原因,就需要进一步分析查询延迟和卡顿的原因。进入开启慢查询 S2 步骤,通过慢查询可用快速定位执行慢的SQL语句。我们可以通过设置 long_query_time 参数定义“慢”的阈值(阈值即边界值),如果SQL执行时间超过了阈值,则认为是慢查询。收集上来这些慢查询的SQL语句之后,我们就可以通过分析工具对慢查询日志进行分析。

3、在收集到慢查询的SQL语句后,我们可以进一步用Explain去查看对应SQL语句的执行计划,或者使用Show Profile查看SQL中每一个步骤的时间成本。也就是进入 S3 步骤。这样我们就能了解SQL查询慢的原因是因为执行时间长,还是等待时间长。

4、如果是SQL等待时间长,就进入 A2 步骤。进行调优服务器的参数,比如适当增加数据库缓冲池等。

如果是SQL执行时间长,就进入 A3 步骤。可以从三个方面进行优化调整:

索引设计优化。比如联合索引就比多个单个索引的查询效率要快一些。

Join表是否过多。Join表的数据最好不要超过三张,表的数据越多,嵌套循环就越多,查询时间也就越长。

数据表设计优化。虽然一般设计数据表都遵循三范式,但是我们可以适当的增加数据冗余度,以空间换取时间提高数据的查询效率。

5、如果 A2 和 A3 都不能解决问题,就要考虑数据库自身的SQL查询性能是否已经达到了瓶颈,如果确认没有达到性能瓶颈,就需要重新检查也就是重复上述步骤。

如果已经达到了性能瓶颈,进入 A4 阶段,需要考虑增加服务器,采用读写分离的架构,或者考虑对数据库进行分库分表,比如垂直分库,垂直分表和水平分表等。

小结

整个过程中通过观察数据库整体的运行状态,借助性能分析工具可以让我们了解执行慢的SQL有哪些,查看具体的SQL执行计划,甚至是SQL执行中的每一步成本代价,这样定位了问题所在,找到了问题再采取相应的行动从而完成数据库的调优。

如何用性能分析工具进行调优,看下面⬇的文章你就知道啦~

MySQL性能分析神器,你还不知道它?那你就out了

ce修改服务器的数据库,数据库服务器的调优步骤相关推荐

  1. solaris oracle zfs 调优,为数据库产品进行 ZFS 调优

    为数据库产品进行 ZFS 调优 在将 ZFS 与数据库产品结合使用之前,请注意以下事项. 如果数据库针对 I/O 使用固定磁盘块或记录大小,请相应地设置 ZFS recordsize 属性以与该大小相 ...

  2. ce修改器我的世界服务器,如何用ce修改我的世界饥饿度 | 手游网游页游攻略大全...

    发布时间:2016-01-09 大家在玩游戏遇到了看不懂的图文或是过不去的关卡.不熟练的技巧攻略的时候是不是很着急呢?没关系,游戏攻略吧为你解答.本文给大家分享一下关于中的一些小技巧,主要是帮助各位玩 ...

  3. 循序渐进linux——基础知识、服务器搭建、系统管理、性能调优、集群应用_第四讲,Proxmox部署与应用...

    大家好!今天小编继续给大家介绍Ceph存储系统第四讲<Proxmox部署与应用>.在前几讲给大家介绍了Ceph存储系统基础知识,大家应该已经对Ceph有个大概了解,当然了解归了解,在实际工 ...

  4. x86服务器中网络性能分析与调优(高并发、大流量网卡调优)

    最近在百度云做一些RTC大客户的项目,晚上边缘计算的一台宿主机由于CPU单核耗被打满,最后查到原因是网卡调优没有生效,今天查了一下网卡调优的资料,欢迎大家共同探讨. 一.网卡调优方法 1.Broadc ...

  5. 服务器:浅谈 Nginx 性能调优,太实用了!

    Linux系统参数优化 下文中提到的一些配置,需要较新的Linux(2.6以上)内核才能够支持,笔者使用的CentOS 7.4,内核版本3.10,如果不满足需要的话,最好进行相应的升级,毕竟打补丁是件 ...

  6. mysql数据库学习之sql调优思路

    mysql调优的大致思路 1.定位到执行慢的sql语句 首先执行 show VARIABLES LIKE '%quer%' 可以得到 第一个表示慢日志是否开启,默认关闭,第二表示慢日志的文件的位置. ...

  7. linux修改文件句柄数生效_linux系统层面调优和常见的面试题

    linux系统层面调优和常见的面试题​mp.weixin.qq.com 无论对Spark集群,还是Hadoop集群等大数据相关的集群进行调优,对linux系统层面的调优都是必不可少的,这里主要介绍3种 ...

  8. ce修改器如何骗过服务器,如何完美伪造一个宕机服务器?骗过攻击者

    如何完美伪造一个宕机服务器?骗过攻击者,如果对你有帮助就看看吧,你是否还在为服务器被攻击而整天苦恼呢?今天给大家分享一个完美骗过攻击者伪造一个宕机服务器教程,让攻击者都不知道IP是死的还是已经处于宕机 ...

  9. 高级篇——数据库调优步骤(性能分析工具)

    查看系统性能参数 统计sql的查询成本 last_quer 慢查询日志分析工具 mysqldumpslow 关闭慢查询日志 当调优的时候再开启 平时开着会影响性能 删除慢查询日志 恢复慢查询日志的初始 ...

最新文章

  1. Eclipse和MyEclipse相关的快捷键
  2. 通过已有SQL语句,生成数据库模型PDM
  3. Nginx:限流、缓存、黑白名单等功能详解!
  4. 创新视角下的复盘 | 2021/08/01-2021/09/30
  5. linux中updatedb命令详解,updatedb命令
  6. hive 导入hdfs数据_将数据加载或导入运行在基于HDFS的数据湖之上的Hive表中的另一种方法。
  7. 第三十一期:大数据分析师学习入门,10个数据可视化技巧
  8. Python3 爬虫学习笔记 C06 【正则表达式】
  9. 小米一元流量magisk_电信流量10G才9.9元?
  10. 伊拉克博士深陷战区要耽搁毕业论文,瑞典导师派武装雇佣兵救他全家
  11. 在JavaScript中复制数组的最快方法-切片与“ for”循环
  12. 配置php错误导入文件,php 导入文件(逻辑处理)
  13. manifest离线缓存技术
  14. 01. Linux文件目录结构及存放内容(功能)
  15. button layui-btn 色调
  16. 在威联通NAS上实现硬盘独立休眠
  17. Mockjs-官网学习总结
  18. 守望先锋服务器修改,守望先锋开发者访谈:关于自定义的服务器
  19. magisk安装失败_联想Z6 Pro安卓10刷Magisk、太极
  20. 2008年公休假安排:

热门文章

  1. 20-40-020-安装-kafka-eagle-bin-1.3.3安装
  2. 【Kafka】kafka-eagle几个指标含义
  3. 【Java】Java对象转换成Map
  4. Spring Boot : 资源加载器
  5. Flink的Socket案例
  6. 【Hbase】命令行load数据文件到Hbase
  7. java输出object object_js控制台显示[object Object]问题
  8. Spring全家桶——SpringCloud之Feign(Finchley版)
  9. java vector 多线程_如何使用vector解决多线程问题(java)
  10. [数据库笔记]规范化(Normalization)-把数据冗余降下来