知识大全 通过性能剖析进行优化
Posted 时间
篇首语:月与灯依在,不见去年人本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 通过性能剖析进行优化相关的知识,希望对你有一定的参考价值。
高性能MySQL:通过性能剖析进行优化 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
通过性能剖析进行优化
一旦掌握并实践面向响应时间的优化方法 就会发现需要不断地对系统进行性能剖析(profiling)
性能剖析是测量和分析时间花费在哪里的主要方法 性能剖析一般有两个步骤 测量任务所花费的时间 然后对结果进行统计和排序 将重要的任务排到前面
性能剖析工具的工作方式基本相同 在任务开始时启动计时器 在任务结束时停止计时器 然后用结束时间减去启动时间得到响应时间 也有些工具会记录任务的父任务 这些结果数据可以用来绘制调用关系图 但对于我们的目标来说更重要的是 可以将相似的任务分组并进行汇总 对相似的任务分组并进行汇总可以帮助对那些分到一组的任务做更复杂的统计分析 但至少需要知道每一组有多少任务 并计算出总的响应时间 通过性能剖析报告(profile report)可以获得需要的结果 性能剖析报告会列出所有任务列表 每行记录一个任务 包括任务名 任务的执行时间 任务的消耗时间 任务的平均执行时间 以及该任务执行时间占全部时间的百分比 性能剖析报告会按照任务的消耗时间进行降序排序
为了更好地说明 这里举一个对整个数据库服务器工作负载的性能剖析的例子 主要输出的是各种类型的查询和执行查询的时间 这是从整体的角度来分析响应时间 后面会演示其他角度的分析结果 下面的输出是用Percona Toolkit 中的p query digest(实际上就是著名的Maatkit 工具中的mk query digest)分析得到的结果 为了显示方便 对结果做了一些微调 并且只截取了前面几行结果
Rank Response time Calls R/Call Item
==== ================ ===== ====== =======
% SELECT InvitesNew
% SELECT StatusUpdate
% SHOW STATUS
上面只是性能剖析结果的前几行 根据总响应时间进行排名 只包括剖析所需要的最小列组合 每一行都包括了查询的响应时间和占总时间的百分比 查询的执行次数 单次执行的平均响应时间 以及该查询的摘要 通过这个性能剖析可以很清楚的看到每个查询相互之间的成本比较 以及每个查询占总成本的比较 在这个例子中 任务指的就是查询 实际上在分析MySQL 的时候经常都指的是查询
我们将实际地讨论两种类型的性能剖析 基于执行时间的分析和基于等待的分析 基于执行时间的分析研究的是什么任务的执行时间最长 而基于等待的分析则是判断任务在什么地方被阻塞的时间最长
如果任务执行时间长是因为消耗了太多的资源且大部分时间花费在执行上 等待的时间不多 这种情况下基于等待的分析作用就不大 反之亦然 如果任务一直在等待 没有消耗什么资源 去分析执行时间就不会有什么结果 如果不能确认问题是出在执行还是等待上 那么两种方式都需要试试 后面会给出详细的例子
事实上 当基于执行时间的分析发现一个任务需要花费太多时间的时候 应该深入去分析一下 可能会发现某些 执行时间 实际上是在等待 例如 上面简单的性能剖析的输出显示表InvitesNew 上的SELECT 查询花费了大量时间 如果深入研究 则可能发现时间都花费在等待I/O 完成上
在对系统进行性能剖析前 必须先要能够进行测量 这需要系统可测量化的支持 可测量的系统一般会有多个测量点可以捕获并收集数据 但实际系统很少可以做到可测量化 大部分系统都没有多少可测量点 即使有也只提供一些活动的计数 而没有活动花费的时间统计 MySQL 就是一个典型的例子 直到版本 才第一次提供了PerformanceSchema 其中有一些基于时间的测量点注 而版本 及之前的版本没有任何基于时间的测量点 能够从MySQL 收集到的服务器操作的数据大多是show status计数器的形式 这些计数器统计的是某种活动发生的次数 这也是我们最终决定创建Percona Server 的主要原因 Percona Server 从版本 开始提供很多更详细的查询级别的测量点
虽然理想的性能优化技术依赖于更多的测量点 但幸运的是 即使系统没有提供测量点 也还有其他办法可以展开优化工作 因为还可以从外部去测量系统 如果测量失败 也可以根据对系统的了解做出一些靠谱的猜测 但这么做的时候一定要记住 不管是外部测量还是猜测 数据都不是百分之百准确的 这是系统不透明所带来的风险
举个例子 在Percona Server 中 慢查询日志揭露了一些性能低下的原因 如磁盘I/O等待或者行级锁等待 如果日志中显示一条查询花费 秒 其中 秒在等待磁盘I/O 那么追究其他 % 的时间花费在哪里就没有意义 磁盘I/O 才是最重要的原因
返回目录 高性能MySQL
编辑推荐
ASP NET开发培训视频教程
数据仓库与数据挖掘培训视频教程
cha138/Article/program/MySQL/201311/29720相关参考
高性能MySQL:对应用程序进行性能剖析 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 对应用程
高性能MySQL:使用性能剖析 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 使用性能剖析 当
高性能MySQL:理解性能剖析 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 理解性能剖析 M
Oracle设置系统参数进行性能优化 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一SGA
ASP.NET如何进行性能优化问题 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一SqlDat
ASP.NET如何进行性能优化问题[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 二查询语
ASP.NET如何进行性能优化问题[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 四控件的
ASP.NET如何进行性能优化问题[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一Sql
Hibernate是对JDBC的轻量级封装因此在很多情况下Hibernate的性能比直接使用JDBC存取数据库要低然而通过正确的方法和策略在使用Hibernate的时候还是可以非常接近直接使用JD
ASPX页Web服务调用性能优化 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 文介绍了如何通过