高性能MySQL(三)
服务器性能剖析
性能优化概述
性能优化是降低CPU使用率?错误,资源就是用来消耗的,新版本MySQL的InnoDB引擎对资源的利用率还增高了,所以这不是一个好的衡量标准。
提升每秒查询量?其实就是吞吐量,但吞吐量也只是性能优化的副产品,恰好是性能的倒数。
降低响应时间,这才是优化的重点,但容易误解的是影响响应时间的因素有很多,我们应该关注于最耗时的几个操作。
性能分析有几点比较重要,值得优化的查询、异常、未知错误、隐藏的细节,好的工具可以获取足够的信息。
对应用进行性能剖析
数据库有时并不是主要的瓶颈,因此最好从整个应用的角度进行测量。
性能剖析本身会导致应用变慢,但相对之后的优化,这是值得的。
有很多SaaS工具软件支持应用剖析。
剖析MySQL查询
慢查询日志是官方提供的性能分析工具,配置long_query_time=0来开启捕获所有查询,响应时间单位可达微秒级。
慢查询日志几乎没什么性能影响,但注意对磁盘消耗较大,通常只在需要剖析时开启一段时间慢查询。
剖析单条查询
设置SET PROFILING = 1;然后通过SHOW PROFILES;获得ID,通过SHOW PROFILE FOR QUERY [ID]查看详细信息。
// 无法直接排序结果,但可通过INFOMATION_SCHEMA中对应的表来排序结果
SELECT STATE, SUM(DURATION) AS Total_R
FROM INFORMATION_SCHEMA.PROFILING
WHERE QUERY_ID = 7
GROUP BY STATE
ORDER BY Total_R DESC;
SHOW STATUS是一个计数器,并不能反映时间消耗,但可以用作参考。
SHOW STATUS
WHERE Variable_name LIKE 'Handler%'
OR Variable_name LIKE 'Created%';
总结
- 定义性能最有效的方法就是响应时间;
- 无法测量就无法有效优化;
- 测量最好从应用开始而不是数据库,即使问题出现在数据库;
- 完整的测量需要分析大量数据,找些工具最好;
- 剖析报告丢弃了很多细节,不要完全依赖;
- 消耗时间的操作有两种:工作和等待;
- 优化和提升是两回事,若提升的成本超过收益就应该停止;
- 决策应该基于数据而不是直觉。
高性能MySQL(三)的更多相关文章
- 【高性能Mysql 】读书笔记(三)
第5章 创建高性能的索引 本文为<高性能Mysql 第三版>第四章读书笔记,Mysql版本为5.5 索引基础 索引的重要性:找一本800面的书的某一段内容,没有目录也没有页码(页码也可类比 ...
- 高性能Mysql主从架构的复制原理及配置详解
温习<高性能MySQL>的复制篇. 1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台 ...
- 1121高性能MySQL之运行机制
本文来自于拜读<高性能MySQL(第三版)>时的读书笔记作者:安明哲转载时请注明部分内容来自<高性能MySQL(第三版)> MySQL的逻辑构架 MySQL服务器逻辑架构 最上 ...
- 转:高性能Mysql主从架构的复制原理及配置详解
温习<高性能MySQL>的复制篇. 1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台 ...
- 高性能Mysql主从架构的复制原理及配置详解(转)
温习<高性能MySQL>的复制篇. 1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台 ...
- 高性能mysql主存架构
原文:高性能mysql主存架构 MySQL Replication(Master与Slave基本原理及配置) 主从mysql工作原理: 1:过程: (1)Mysql的复制(replication)是一 ...
- 《高性能Mysql》讲聚簇索引
<高性能Mysql>原文 聚簇索引如下图为聚簇所有的存储方式,聚簇实际不是一种索引,而是一种数据的存储方式,InnoDB的聚簇事假在同一个结构中保存了B-Tree索引和数据行. 当表有聚簇 ...
- 高性能MySQL中的三星索引
高性能MySQL中的三星索引 我对此提出了深深的疑问: 一星:相关的记录指的是什么??(相关这个词很深奥,“相关部门”是什么部门) 二星:如果建立了B-Tree(B+Tree)索引,数据就有序了.三星 ...
- 高性能mysql:创建高性能的索引
本文系阅读<高性能MySQL>,Baron Schwartz等著一书中第五章 创建高性能的索引的笔记,索引是存储引擎用于快速找到记录的一种数据结构. 索引对于良好的性能非常关键,尤其是当表 ...
- 《高性能MySQL》 读书总结
目录: 第一章.MySQL架构与历史 第二章.MySQL基准测试 第三章.服务器性能剖析 第四章.Schema与数据类型优化 第五章.创建高性能的索引 第六章.查询性能优化 第七章.MySQL高级特性 ...
随机推荐
- [转] Makefile 基础 (7) —— Makefile 中 make 的运行
该篇文章为转载,是对原作者系列文章的总汇加上标注. 支持原创,请移步陈浩大神博客:(最原始版本) http://blog.csdn.net/haoel/article/details/2886 我转自 ...
- float浮动的学习
很早以前就接触过CSS,然后就在也没有深入了解过.今天突然遇到有人问了关系浮动的问题,碰巧没事就将内容整理下,与大家交流学习. 首先大家也应该都知道,div是块级元素,在页面中独占一行,自上而下排列, ...
- hdu 4602 递推关系矩阵快速幂模
Partition Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- MinGW 创建的程序或 DLL 脱离 libgcc-xx-xx.dll 和 libstdc++-x.dll 运行库的方法
MinGW 沿袭了 Linux 下 gcc/g++ 的习惯,编译出的程序或者动态链接库(共享库)总是默认采用动态链接方式,需要系统中附带运行时库文件 libgcc-xx-xx.dll 和 libstd ...
- LeetCode OJ——Binary Tree Inorder Traversal
http://oj.leetcode.com/problems/binary-tree-inorder-traversal/ 树的中序遍历,递归方法,和非递归方法. /** * Definition ...
- html-屏蔽按键盘空格键是滚动条向下滚动
document.onkeydown = function(ev){ var e = ev || event; if(e.keyCode == 32){ return false; } }
- 洛谷——P1588 丢失的牛
P1588 丢失的牛 题目描述 FJ丢失了他的一头牛,他决定追回他的牛.已知FJ和牛在一条直线上,初始位置分别为x和y,假定牛在原地不动.FJ的行走方式很特别:他每一次可以前进一步.后退一步或者直接走 ...
- ML| EM
What's xxx The EM algorithm is used to find the maximum likelihood parameters of a statistical model ...
- [Bzoj5359][Lydsy1805月赛]寻宝游戏(dp)
5359: [Lydsy1805月赛]寻宝游戏 Time Limit: 2 Sec Memory Limit: 512 MBSubmit: 71 Solved: 19[Submit][Status ...
- BZOJ 3065 带插入区间第K小值
题目描述 Description 从前有n只跳蚤排成一行做早操,每只跳蚤都有自己的一个弹跳力a[i].跳蚤国王看着这些跳蚤国欣欣向荣的情景,感到非常高兴.这时跳蚤国王决定理性愉悦一下,查询区间k小值. ...