容我感慨一下:DBA真的不是盖的
3.3.3使用性能剖析:有限
3.4诊断简歇性问题
如系统偶尔停顿、慢查询、唤影问题,尽量不要使用试错的方式解决问题:风险大
3.4.1单条查询问题还是服务问题
使用SHOW GLOBAL STATUS
较高频率:1s/次执行该命令铺获数据,问题出现通过计数器的
使用SHOW PROCESSLIST 【参考】显示哪些线程正在运行
使用查询日志
开启慢查询,设置全局的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、是否有明显的跳跃性变化
工具:
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数据库】第三章解读:服务器性能剖析 (下)的详细内容。更多信息请关注PHP中文网其他相关文章!

InnoDB使用redologs和undologs确保数据一致性和可靠性。1.redologs记录数据页修改,确保崩溃恢复和事务持久性。2.undologs记录数据原始值,支持事务回滚和MVCC。

EXPLAIN命令的关键指标包括type、key、rows和Extra。1)type反映查询的访问类型,值越高效率越高,如const优于ALL。2)key显示使用的索引,NULL表示无索引。3)rows预估扫描行数,影响查询性能。4)Extra提供额外信息,如Usingfilesort提示需要优化。

Usingtemporary在MySQL查询中表示需要创建临时表,常见于使用DISTINCT、GROUPBY或非索引列的ORDERBY。可以通过优化索引和重写查询避免其出现,提升查询性能。具体来说,Usingtemporary出现在EXPLAIN输出中时,意味着MySQL需要创建临时表来处理查询。这通常发生在以下情况:1)使用DISTINCT或GROUPBY时进行去重或分组;2)ORDERBY包含非索引列时进行排序;3)使用复杂的子查询或联接操作。优化方法包括:1)为ORDERBY和GROUPB

MySQL/InnoDB支持四种事务隔离级别:ReadUncommitted、ReadCommitted、RepeatableRead和Serializable。1.ReadUncommitted允许读取未提交数据,可能导致脏读。2.ReadCommitted避免脏读,但可能发生不可重复读。3.RepeatableRead是默认级别,避免脏读和不可重复读,但可能发生幻读。4.Serializable避免所有并发问题,但降低并发性。选择合适的隔离级别需平衡数据一致性和性能需求。

MySQL适合Web应用和内容管理系统,因其开源、高性能和易用性而受欢迎。1)与PostgreSQL相比,MySQL在简单查询和高并发读操作上表现更好。2)相较Oracle,MySQL因开源和低成本更受中小企业青睐。3)对比MicrosoftSQLServer,MySQL更适合跨平台应用。4)与MongoDB不同,MySQL更适用于结构化数据和事务处理。

MySQL索引基数对查询性能有显着影响:1.高基数索引能更有效地缩小数据范围,提高查询效率;2.低基数索引可能导致全表扫描,降低查询性能;3.在联合索引中,应将高基数列放在前面以优化查询。

MySQL学习路径包括基础知识、核心概念、使用示例和优化技巧。1)了解表、行、列、SQL查询等基础概念。2)学习MySQL的定义、工作原理和优势。3)掌握基本CRUD操作和高级用法,如索引和存储过程。4)熟悉常见错误调试和性能优化建议,如合理使用索引和优化查询。通过这些步骤,你将全面掌握MySQL的使用和优化。

MySQL在现实世界的应用包括基础数据库设计和复杂查询优化。1)基本用法:用于存储和管理用户数据,如插入、查询、更新和删除用户信息。2)高级用法:处理复杂业务逻辑,如电子商务平台的订单和库存管理。3)性能优化:通过合理使用索引、分区表和查询缓存来提升性能。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

Atom编辑器mac版下载
最流行的的开源编辑器

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。