《高性能MySQL》 第三章 服务器性能剖析 读书笔记
性能优化
基于响应时间
性能剖析
测量任务所花费的时间
对结果进行统计和排序,将重要的任务排到前面
时间分类
执行时间
等待时间
理解性能剖析
值得优化的查询
- 一些只占总响应时间比重很小的査询是不值得优化的
- 如果优化的成本大于优化的收益,则应停止优化
异常情况
- 对于某些执行时间过长影响用户体验
被隐藏的细节
如平均值会掩盖部分异常的情况
- 参考工具:pt-query-digest
性能测量工具
New Relic、instrumentation-for-php
剖析MySQL查询
剖析服务器负载
借助慢查询日志定位到需要优化的SQL
- 分析工具:pt-query-digest
剖析单条查询
打开profile(SET profiling =1),再使用show profiles指令,可以测量出耗费的时间和其他一些査询执行状态变更相关的数据(仅在当前会话有效)
show profiles
- show profile
show profile无法按查询时间对show profile中的条目进行排序,定位真正耗费时间长的项比较困难,可以利用INFORMATION_SCHEMA中的表进行查询并排序
- SET @query_id =1;
SELECT STATE, SUM(DURATION) AS Total_R, -> ROUND( -
-> 100 * SUM(DURATION) /
-> (SELECT SUM(DURATION)
-> FROM INFORMATION SCHEMA.PROFILING
-> WHERE QUERY_ID =~@query id
-> ),2) AS Pct R,~ ~
-> COUNT() AS Calls,
-> SUM(DURATION) / COUNT() AS “R/CalT’ -> FROM INFORMATION SCHEMA.PROFILING -> WHERE QUERY_ID =~@query_id -> GROUP BY STATE ~
-> ORDER BY Total_R DESC;
- SET @query_id =1;
通过SHOW STATUS/SHOW GLOBAL STATUS查看会话/全局计数信息
使用Performance Schema
诊断间歇性问题
判断是单条语句问题还是服务器问题
SHOW GLOBAL STATUS打印出当前线程序数以及当前正在执行查询的线程数,(借助mysqladmin工具可以每1秒打印一次数据)并绘制成曲线,通过尖峰或低谷分析
- 通常有两种原因:第一种是新查询等待老查询的锁导致。第二种是有大量的SQL涌进数据库
不停捕获SHOW PROCESSLIST的结果,观察是否有大量线程处于不正常的状态,高版本还可通过INFORMATION_SCHEMA的processlist表
- 书中给出了两个例子:第一种是INNODB内部争用脏块与频繁刷新导致;第二种是MYSIAM锁表导致
使用查询日志,开启慢查询日志并设置long_query_time=0
捕获诊断数据
诊断阈值的设置。需要保证不会误报,又不会漏检,可借助pt-stalk工具
收集数据
- 如果是执行时间较长,则进行剖析分析。可使用tcpdump
- 如果是等待时间较长,则进行等待分析.可使用GDB堆栈跟踪
- 如果是未知问题,则两种分析的数据均要收休
- 可借助pt-collect工具
解释结果数据
有目的地查看报告
- 检査问题是否真的发生
- 是否有非常明显的跳跃性变化
问题分类
- 查询异常的事件或行为
- 对于无法解释的问题,打包交由技术支持人员
一个诊断案例
《高性能MySQL》 第三章 服务器性能剖析 读书笔记相关推荐
- 《高性能MySQL》——服务器性能剖析(笔记)
文章目录 三.服务器性能剖析 3.1 性能优化简介 3.1.1 通过性能剖析进行优化 3.1.2 理解性能剖析 3.2 对应用程序进行性能剖析 3.3 剖析MySQL查询 3.3.1 剖析服务器负载 ...
- 高质量解读《高性能mysql》——第3章服务器性能剖析
前言: 高效读书,一张逻辑图带你读懂.读薄书中重点. 深入学习MySQL系列,解读的目的是为了把书读薄,抽出重点进行梳理.理解.运用.因大量文字很容易让人觉得枯燥无味,为此博主花费一定精力和时间整理输 ...
- 《Visual C# 从入门到精通》第三章使用判断语句——读书笔记
第3章 使用判断语句 3.1 使用布尔操作符 布尔操作符是求值为true或false的操作符. C#提供了几个非常有用的布尔操作符,其中最简单的是NOT(求反)操作符,它用感叹号(!)表示.!操作符求 ...
- 高性能mysql第三版读书笔记
第1章 MySQL 架构与历史 MySQL最重要.最与众不同的特性是它的存储引擎架构,这种架构的设计将查询处理(Query Processing)以及其他系统任务(Server Task)和数据的存储 ...
- 读薄《高性能MySql》(三)索引优化
读薄<高性能MySql>(一)MySql基本知识 读薄<高性能MySql>(二)Scheme与数据优化 读薄<高性能MySql>(三)索引优化 读薄<高性能M ...
- MySQL各种优化基于《高性能MySQL第三版》
[TOC] MySQL各种优化 查询优化 查询优化器模块 查询优化器的任务是发现执行 SQL 查询的最佳方案.大多数查询优化器,要么基于规则.要么基于成本. 大多数查询优化器,包含 MySQL 的查询 ...
- MySQL 第三章3.1 数据库查询(where)
MySQL 第三章3.1 数据库查询(where) 3.1.3 查询条件 where子句 where 子句会根据条件对from 子句一行一行的进行判断,当条件为true时,这行就被包含到whe ...
- Oracle 19c VLDB and Partitioning Guide 第2章:Partitioning Concepts 读书笔记
本文为Oracle 19c VLDB and Partitioning Guide第2章Partitioning Concepts的读书笔记. 分区可提高各种应用程序的性能.可管理性和可用性,并有助于 ...
- Oracle 19c VLDB and Partitioning Guide 第4章:分区管理 读书笔记
本文为Oracle 19c VLDB and Partitioning Guide第4章Partition Administration的读书笔记. 使用分区表和索引时,分区管理是一项重要任务. 本章 ...
最新文章
- 让Hinton后悔投少了的AI公司:吴恩达弟子创办,李飞飞也是投资人
- [2778]小明的花费预算 (二分查找)SDUT
- Kubernetes List-Watch
- 深度学习(二十八)——SOM, Group Normalization, MobileNet, 花式卷积进阶
- xss challenge 解题思路(1-3)
- OpenJudge NOI 1.7 30:字符环
- Maple: 多项式相乘
- 单片机ADC采样算法----递推平均值采样法
- Jenkins在Linux环境安装
- 电视盒子刷鸿蒙系统,家里的智能电视能装鸿蒙系统吗?鸿蒙系统有哪些优势?...
- Kinect for Windows SDK v2.0 开发笔记 (七)语音识别(上)
- 【Proteus仿真】Arduino UNO+OLED12864 I2C接口跑图形库
- axios请求拦截器 和 响应拦截器
- C语言中的标识符有:关键字、预定义标识符、用户标识符
- Java基础三个排序详解_继承粗解语法关键字分析
- Revit二次开发之按照标高过滤元素
- GPU大百科全书 第六章 谁也离不开的缓冲
- 新手必需知道的10个优秀的日志分析工具
- osg_操作器、碰撞检测、上楼梯篇
- 在微信小程序中,使用wxParse插件解析HTML/md富文本