原文出自:
开发俏皮话
【让我 996 不算啥,我只怕测试也 996 给我提 bug!】
笔者瞩望
你好,无论我们在现实生活中是否相识,在 InfoQ 的世界里终会快乐相遇 , 在此提前预祝国庆节快乐,并且在属于我们的“1024”那天不在加班 , 早点回家陪陪老婆和孩子啊 。
技术金字塔
本篇文章会按照自上而下以及自下而上的两种方向去“游览”【MySQL 技术金字塔】 , 两个方向分别是从成本出发的(潜台词就是便宜越好,照顾公司成本哦?。? ,本章内容,可能有点多 , 希望大家慢慢消化 , 实在不行来片“吗丁啉”,哈哈,开玩笑了!
主要技术分布为 6 大部分,如下图金子图所示:
研发成本角度
从软件的【研发成本】的角度而言:伴随着优化的方向,从金字塔顶部像金字塔底部的方向进行过度,伴随着高度越来越低,成本会越来越低,这个方向其实是非常考验技术人员与项目管理者的能力的 , 但是它确实,老板对象看到的,哈哈 。
实现效果角度
从软件的【技术可行性和效果】的角度而言:伴随着优化的方向,从金字塔低部像金字塔顶部的方向进行过度,伴随着高度越来越高 , 成本会越来越高,耗费的财力和人力也会相对的有所降低,但是如果多花钱,老板肯定不愿意 , 比如,请一些行业大牛或者一些牛掰的服务器等,可以看出来正好与上面的方向相反 。
总结一下,以上这两点的方针 , 遵循着研发成本的越来越低+效果方案越来越高 , 那么我们就划分出一个公式,作为系统服务调优方法论,我们就按照金字塔层面,进行自下而上进行调优!我们接下来就来按照这个方向进行分析 。
调优白皮书
SQL 调优
根据业务需求,不单纯的写好 SQL 语句,还要对 SQL 语句进行调优,使得其性能变得最佳化 。
调优思路
由三个步骤组成:发现问题、分析问题和解决问题 。
发现慢 SQL 及日志
查询慢 SQL 的日志是 MySQL 内置的一个功能,可以记录执行时间超过我们配置阈值的 SQL 语句 。
参数与默认值:
修改数据库服务配置
修改我们安装后的配置文件 f , 在[]段落中加入以上参数配置:
之后进行重启服务
修改全局会话配置
这种方式,不需要重启就可以生效,但是当服务器重启的时候 , 又会重新丢失配置 。以上的配置可以
将慢查询 SQL 记录到 mysql 数据库中的表中以及对应的的文件中去 。
分析慢 SQL 及日志
分析慢 SQ 的查询日志
查询表,当根据上面的设置,当设置为 TABLE 的时候 , 就会将 mysql 的慢查询日志记录到 mysql. 表中去mysql索引类型都有哪些,我们可以采用 * from mysql.去进行查询,可以根据此方面进行分析和统计 sql 的执行性能 。
分析慢 SQL 日志文件
当设置为 FILE 的时候 , 因为文件过大,不方便查看,所以可以采用专门的工具进行分析,这里主要介绍原生的工具进行分析,如下图所示:
【独一无二的「MySQL 调优金字塔」相信也许你拥有了它,你就赢了】 –help:
命令分析慢 SQL
关键字进行执行慢 SQL 语句 , 进行指标分析:
返回的基本结果如下:
查询类型,如下几组值:
和类似,只是子查询使用的是非唯一索引
文章插图
文章插图
好了看到这里你是否会觉得已经眼花缭乱了?现在开始重头戏 , 上面的可以作为知识扩展和了解,但下面的内容建议你一定要理解哦,会对性能优化有很大的帮助哦!
根据联接类型浏览所有行 , 并为所有匹配 WHERE 子句的行保存排序关键字和行的指针来完成排序 。然后关键字被排序,并按排序顺序检索行 。
在不同版本的变化
show取值
SQL 性能分析
我们主要介绍一下三种:
show
它是 MySQL 的一个性能分析命令,可以跟踪 SQL 各种资源消耗 。使用格式如下:
SHOW PROFILE [type [, type] ... ] [FOR QUERY n][LIMIT row_count [OFFSET offset]]
复制代码
默认情况下mysql索引类型都有哪些 , show只展示和两列,如果想展示更多信息,可指定 type,使用步骤如下:
select @@have_profiling;
复制代码
select @@profiling;
复制代码
set profiling=1
复制代码
Show命令
首先使用show 分析指定查询:
使用 show进行分析,默认情况下,只展示和两列,如果想展示更多信息,可指定 type 。
使用 SHOWFOR QUERY 1;,1 代表的 (show )
展示 CPU 相关的开销
分析完成后,记得关闭掉 SHOW功能:
. 用来做性能分析,内容对应 SHOW和 SHOW语句产生的信息,SHOW本质上使用的也是 . 表 。
表字段
查询
. 表已被废弃,在未来可能会被删除 。未来将可使用替代,
是 MySQL 建议的性能分析方式,未来 show /show 、 . 都会废弃 。
在 .6 及更高版本才能使用 。可以使用 show进行查看 。
下面来用去实现 show类似的效果: 查看是否开启性能监控
查看启用情况,MySQL 5.7 开始默认启用 。
你也可以执行类似如下的 SQL 语句,只监控指定用户执行的 SQL:
这样 , 就只会监控机器上用户发送过来的 SQL 。其他主机、其他用户发过来的 SQL 统统不监控,执行如下 SQL 语句 , 开启相关监控项:
使用开启监控的用户,执行 SQL 语句,比如:
执行如下 SQL,获得语句的。
这一步类似于 show。执行如下 SQL 语句做性能分析,这样就可以知道这条语句各种阶段的信息了 。
三种方式对比与选择
MySQL 官方文档声明 SHOW已被废弃,并建议使用作为替代品 。,目前可以继续用 SHOW了解 , 为未来做好准备
相关参数
缓存技术分析
MySQL 的 IO 持久化的将耗费大量资源 。所以采用基于内存的 redis 会更好!
总结分析
具体的分析性能介绍后续会在【举世无双的「MySQL 调优金字塔」相信也许你拥有了它,你就很可能拥有了全世界 。】进行深入介绍,此外还会伴有对索引原理的深入理解和分析 。
本文到此结束,希望对大家有所帮助 。
- ?比鸭子大比鹅小的家禽叫什么
- ?白芝麻的营养价值与功效
- 伤心难过的时候该怎么办 ?当一个人很难过的时候怎么办
- ?媒体时代的三件法宝是指
- ?玻利维亚哪国的
- ?名扬天下指的什么动物
- ?盘点那些演技炸裂的演员
- ?冰块敷脸的正确方法
- 别人问你暗恋谁怎么回答 ?当你喜欢的人问你喜欢谁怎么回复
- ?超级本和笔记本的区别