0

0

【MySQL数据库】第三章解读:服务器性能剖析 (下)

php是最好的语言

php是最好的语言

发布时间:2018-08-07 13:43:45

|

1610人浏览过

|

来源于php中文网

原创

容我感慨一下:dba真的不是盖的

3.3.3使用性能剖析:有限

3.4诊断简歇性问题

如系统偶尔停顿、慢查询、唤影问题,尽量不要使用试错的方式解决问题:风险大

3.4.1单条查询问题还是服务问题

使用SHOW GLOBAL STATUS

较高频率:1s/次执行该命令铺获数据,问题出现通过计数器的

使用SHOW PROCESSLIST 【参考】显示哪些线程正在运行

1.png

 使用查询日志

开启慢查询,设置全局的long_query_time=0,确认all连接采用了新设置(可能需要重置all连接使生效)

注意吞吐量突然下降时间段的日志,查询是在完成阶段才写入到慢查询日志的

 好的工具事半功倍:tcpdump、pt-query-digest、Percona Server

理解发现的问题

可视化数据:gnuplot /R(绘图工具)

gnuplot:

安装    一些命令:    常用技巧       入门教程 2         Gnuplot      数据可视化

建议:先使用前两种方法,开销低且通简单shell脚本或反复执行的查询交互式收集数据

3.4.2铺获诊断数据

现间歇性问题,尽量多收集数据(不只是问题出现时的)

弄清楚:1、有区分 何时出现了问题  的方法:触发器;2、收集诊断数据的工具

诊断触发器

误差:在没有发生问题期间收集了很多诊断数据,浪费时间(这个和前的、仔细读一下 不矛盾)

漏检:在问题出现时没有铺获到数据,错失了机会,开始收集前确认触发器能够真正地识别问题

好的触发器:

找到些能和正常时的阈值进行比较的指标

选择一个合适的阈值:足够高(正常时不会触发)、不能太高(问题发生时不错过)

推荐工具pt-stalk【参考】【2】触发器,设定到某个条件记录 配置需监控的变量 阈值 检查的频率

收集什么样的数据

执行时间:工作的时间和等待的时间

在需要的时间段内收集all能收集的数据

未知问题发生的原因:1、服务器需做大量工作、导致大量消耗CPU;2、在等待资源释放

不同的方法收集诊断数据,确认原因:

1、剖析报告:确认是否有太多工作,工具:tcpdump 监听TCP流量 模式开闭慢查询日志

2、等待分析:确认是否存在大量等待,GDB堆栈跟踪信息、show processlist  ,show innodb status观察线程、事务状态

解释结果数据

目的:1、问题是否真的发生了;2、是否有明显的跳跃性变化

工具:

sematic
sematic

一个开源的机器学习平台

下载

    oprofile利用cpu硬件层面提供的性能计数器(performance counter),通过计数采样,帮助我们从进程、函数、代码层面找出占用cpu的"罪魁祸首"。实例【参考】

   opreport命令,分别从进程和函数层面查看cpu使用情况的方法

 samples |                            %|
-----------------------------------------------------
     镜像内发生的采样次数     采样次数所占总采样次数的百分比      镜像名称

    opannotate命令可显示代码层面占用cpu的统计信息

GDB:Linux应用程序开发中,最常用的调试器是gdb(调试的对象是可执行文件),它可以在程序中设置断点、查看变量值、一步一步跟踪程序的执行过程(数据、源码)、查看内存、堆栈信息。利用调试器的这些功能可以方便地找出程序中存在的非语法错误。【参考】【参考】 语法和实例

3.4.3一个诊断案例

间歇性性能问题,具备MySQL、innodb、GNU/Linux相关知识

明确:1、问题是什么,清晰描述;2、为解决问题已做过什么操作?

开始:1、了解服务器的行为;2、梳理服务器的状态 参数配置 软硬件环境(pt-summary pt-mysql-summary)

不要被离题太多的各种情况分散了注意力,问题写在纸条上,检查一个划掉一个

是原因还是结果???

资源变得效率低下可能的原因:

1、资源过度使用,余额不足;2、资源未被正确匹配;3、资源损坏或失灵

3.5其他剖析工具

USER_STATISTICS:一些表对数据库活动进行测量、审计

strace:调查系统调用情况,使用实际时间、不可预期性、开销的,oprofile使用花费CPU周期

小结:

  • 定义性能最有效的方法是响应时间

  • 无法测量便无法有效优化,性能优化工作需要基于高质量、全方位及完整的响应时间测量

  • 测量的最佳开始点是应用程序,即使问题出在底层的数据库,借助良好的测量较容易发现问题

  • 大多数系统无法完整地测量,测量有时候也会有错误的结果,想办法绕过些限制,要能意识到方法的缺陷和不确定性在哪

  • 完整的测量会产生大量需要分析的数据,so需要用到剖析器(最佳工具)

  • 剖析报告:汇总信息,掩盖和丢弃了很多细节,不会告诉你缺了什么,不能完全依赖

  • 两种消耗时间的操作:工作或等待,almost剖析器只能测量因工作而消耗的时间,so等待分享有时候是很有用的补充,特别是cpu利用率低但工作一直无法完成的情况

  • 优化和提升两回事,当继续提升的成本超过收益时,应停止优化

  • 注意你的直接,思路,决策尽量基于数据

in a words:首先澄清问题、选择合适技术、善用工具、足够细心、逻辑清晰且坚持下去,不要把原因和结果搞混,在确定问题前不要随便针对系统做变动

相关文章:

【MySQL数据库】第二章解读:MySQL基准测试

【MySQL数据库】第三章解读:服务器性能剖析(上)

相关文章

数码产品性能查询
数码产品性能查询

该软件包括了市面上所有手机CPU,手机跑分情况,电脑CPU,电脑产品信息等等,方便需要大家查阅数码产品最新情况,了解产品特性,能够进行对比选择最具性价比的商品。

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
mysql修改数据表名
mysql修改数据表名

MySQL修改数据表:1、首先查看数据库中所有的表,代码为:‘SHOW TABLES;’;2、修改表名,代码为:‘ALTER TABLE 旧表名 RENAME [TO] 新表名;’。php中文网还提供MySQL的相关下载、相关课程等内容,供大家免费下载使用。

652

2023.06.20

MySQL创建存储过程
MySQL创建存储过程

存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数使用的语句分别为CREATE PROCEDURE和CREATE FUNCTION。使用CALL语句调用存储过程智能用输出变量返回值。函数可以从语句外调用(通过引用函数名),也能返回标量值。存储过程也可以调用其他存储过程。php中文网还提供MySQL创建存储过程的相关下载、相关课程等内容,供大家免费下载使用。

244

2023.06.21

mongodb和mysql的区别
mongodb和mysql的区别

mongodb和mysql的区别:1、数据模型;2、查询语言;3、扩展性和性能;4、可靠性。本专题为大家提供mongodb和mysql的区别的相关的文章、下载、课程内容,供大家免费下载体验。

280

2023.07.18

mysql密码忘了怎么查看
mysql密码忘了怎么查看

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql密码忘了怎么办呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

513

2023.07.19

mysql创建数据库
mysql创建数据库

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql怎么创建数据库呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

250

2023.07.25

mysql默认事务隔离级别
mysql默认事务隔离级别

MySQL是一种广泛使用的关系型数据库管理系统,它支持事务处理。事务是一组数据库操作,它们作为一个逻辑单元被一起执行。为了保证事务的一致性和隔离性,MySQL提供了不同的事务隔离级别。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

384

2023.08.08

sqlserver和mysql区别
sqlserver和mysql区别

SQL Server和MySQL是两种广泛使用的关系型数据库管理系统。它们具有相似的功能和用途,但在某些方面存在一些显著的区别。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

522

2023.08.11

mysql忘记密码
mysql忘记密码

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。那么忘记mysql密码我们该怎么解决呢?php中文网给大家带来了相关的教程以及其他关于mysql的文章,欢迎大家前来学习阅读。

594

2023.08.14

php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

0

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
MySQL 教程
MySQL 教程

共48课时 | 1.5万人学习

MySQL 初学入门(mosh老师)
MySQL 初学入门(mosh老师)

共3课时 | 0.3万人学习

简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 777人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号