服务器性能剖析

性能优化概述

性能优化是降低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%';

总结

  1. 定义性能最有效的方法就是响应时间;
  2. 无法测量就无法有效优化;
  3. 测量最好从应用开始而不是数据库,即使问题出现在数据库;
  4. 完整的测量需要分析大量数据,找些工具最好;
  5. 剖析报告丢弃了很多细节,不要完全依赖;
  6. 消耗时间的操作有两种:工作和等待;
  7. 优化和提升是两回事,若提升的成本超过收益就应该停止;
  8. 决策应该基于数据而不是直觉。

高性能MySQL(三)的更多相关文章

  1. 【高性能Mysql 】读书笔记(三)

    第5章 创建高性能的索引 本文为<高性能Mysql 第三版>第四章读书笔记,Mysql版本为5.5 索引基础 索引的重要性:找一本800面的书的某一段内容,没有目录也没有页码(页码也可类比 ...

  2. 高性能Mysql主从架构的复制原理及配置详解

    温习<高性能MySQL>的复制篇. 1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台 ...

  3. 1121高性能MySQL之运行机制

    本文来自于拜读<高性能MySQL(第三版)>时的读书笔记作者:安明哲转载时请注明部分内容来自<高性能MySQL(第三版)> MySQL的逻辑构架 MySQL服务器逻辑架构 最上 ...

  4. 转:高性能Mysql主从架构的复制原理及配置详解

    温习<高性能MySQL>的复制篇. 1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台 ...

  5. 高性能Mysql主从架构的复制原理及配置详解(转)

    温习<高性能MySQL>的复制篇. 1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台 ...

  6. 高性能mysql主存架构

    原文:高性能mysql主存架构 MySQL Replication(Master与Slave基本原理及配置) 主从mysql工作原理: 1:过程: (1)Mysql的复制(replication)是一 ...

  7. 《高性能Mysql》讲聚簇索引

    <高性能Mysql>原文 聚簇索引如下图为聚簇所有的存储方式,聚簇实际不是一种索引,而是一种数据的存储方式,InnoDB的聚簇事假在同一个结构中保存了B-Tree索引和数据行. 当表有聚簇 ...

  8. 高性能MySQL中的三星索引

    高性能MySQL中的三星索引 我对此提出了深深的疑问: 一星:相关的记录指的是什么??(相关这个词很深奥,“相关部门”是什么部门) 二星:如果建立了B-Tree(B+Tree)索引,数据就有序了.三星 ...

  9. 高性能mysql:创建高性能的索引

    本文系阅读<高性能MySQL>,Baron Schwartz等著一书中第五章 创建高性能的索引的笔记,索引是存储引擎用于快速找到记录的一种数据结构. 索引对于良好的性能非常关键,尤其是当表 ...

  10. 《高性能MySQL》 读书总结

    目录: 第一章.MySQL架构与历史 第二章.MySQL基准测试 第三章.服务器性能剖析 第四章.Schema与数据类型优化 第五章.创建高性能的索引 第六章.查询性能优化 第七章.MySQL高级特性 ...

随机推荐

  1. 刷题总结——棘手的操作(bzoj2333)

    题目: 题目背景 SCOI2011 DAY2 T1 题目描述 有 N 个节点,标号从 1 到 N ,这 N 个节点一开始相互不连通.第i个节点的初始权值为 a[i] ,接下来有如下一些操作:U x y ...

  2. Unity 过度光照贴图

    背景:开关窗帘过程,让环境在亮和暗之间过度 事先烘培出亮.暗两张Lighting map.然后代码实现,窗帘开关由动作实现,而代码中通过动作执行进度来过度两张Lighting map void OnA ...

  3. UVA 10003 Cutting Sticks(区间dp)

    Description    Cutting Sticks  You have to cut a wood stick into pieces. The most affordable company ...

  4. luogu 1355 神秘大三角 判断点和三角形的位置关系 面积法 叉积法

    题目链接 题目描述 判断一个点与已知三角形的位置关系. 输入输出格式 输入格式: 前三行:每行一个坐标,表示该三角形的三个顶点 第四行:一个点的坐标,试判断该点与前三个点围成三角形的位置关系 (详见样 ...

  5. 关于Redux到底是个什么鬼

    原文链接:https://zhuanlan.zhihu.com/p/20641377 我们故事的主人公,小明. 小明大学刚毕业,摆脱了宿舍的集体生活,自己在外面租了个一室一厅的小公寓住. 这是客厅的平 ...

  6. 使用sqlparse分析SQL语句,及自己写的SQL分析语句

    备忘, 以后写的时候可以参考. #!/usr/bin/env python # -*- coding: utf-8 -*- import sqlparse import re sql = " ...

  7. 使用Naive Bayes从个人广告中获取区域倾向

    RSS源介绍:https://zhidao.baidu.com/question/2051890587299176627.html http://www.rssboard.org/rss-profil ...

  8. Java 基础【03】序列化和反序列化

    当两个进程在进行远程通信时,彼此可以发送各种类型的数据.无论是何种类型的数据,都会以二进制序列的形式在网络上传送.发送方需要把这个Java对象转换为字节序列,才能在网络上传送:接收方则需要把字节序列再 ...

  9. (49)C# npoi-word

    //新建段落 XWPFParagraph p1 = doc.CreateParagraph(); //对齐方式 p1.SetAlignment(ParagraphAlignment.LEFT); p1 ...

  10. Careercup | Chapter 4

    二叉查换树,左孩子小于等于根,右孩子大于根. 完全二叉树,除最后一层外,每一层上的节点数均达到最大值:在最后一层上只缺少右边的若干结点. complete binary tree 满二叉树,完美二叉树 ...