MySQL性能指标及计算方法
绝大多数MySQL性能指标可以通过以下两种方式获取:
(1)mysqladmin
使用mysqladmin extended-status命令获得的MySQL的性能指标,默认为累计值。如果想了解当前状态,需要进行差值计算;加上参数 --relative(-r),就可以看到各个指标的差值,配合参数--sleep(-i)就可以指定刷新的频率。


(2)Show global status
可以列出MySQL服务器运行各种状态值,累计值。

mysqladmin extended-status命令及show global status得到的指标项特别多。实际应用中,重点关注以下性能指标:
1. tps/qps
tps: Transactions Per Second,每秒事务数;
qps: Queries Per Second每秒查询数;
通常有两种方法计算tps/qps:
方法1:基于 com_commit、com_rollback 计算tps,基于 questions 计算qps。
TPS = Com_commit/s + Com_rollback/s
其中,
Com_commit /s= mysqladmin extended-status --relative --sleep=1|grep -w Com_commit
Com_rollback/s = mysqladmin extended-status --relative --sleep=1|grep -w Com_rollback
QPS 是指MySQL Server 每秒执行的Query总量,通过Questions (客户的查询数目)状态值每秒内的变化量来近似表示,所以有:
QPS = mysqladmin extended-status --relative --sleep=1|grep -w Questions
仿照上面的方法还可以得到,mysql每秒select、insert、update、delete的次数等,如:
Com_select/s = mysqladmin extended-status --relative --sleep=1|grep -w Com_select
Com_select/s:平均每秒select语句执行次数
Com_insert/s:平均每秒insert语句执行次数
Com_update/s:平均每秒update语句执行次数
Com_delete/s:平均每秒delete语句执行次数
方法2: 基于com_%计算tps ,qps
tps= Com_insert/s + Com_update/s + Com_delete/s
qps=Com_select/s + Com_insert/s + Com_update/s + Com_delete/s
2. 线程状态
threads_running:当前正处于激活状态的线程个数
threads_connected:当前连接的线程的个数
3. 流量状态
Bytes_received/s:平均每秒从所有客户端接收到的字节数,单位KB
Bytes_sent/s:平均每秒发送给所有客户端的字节数,单位KB
4. innodb文件读写次数
innodb_data_reads:innodb平均每秒从文件中读取的次数
innodb_data_writes:innodb平均每秒从文件中写入的次数
innodb_data_fsyncs:innodb平均每秒进行fsync()操作的次数
5. innodb读写量
innodb_data_read:innodb平均每秒钟读取的数据量,单位为KB
innodb_data_written:innodb平均每秒钟写入的数据量,单位为KB
6. innodb缓冲池状态
innodb_buffer_pool_reads: 平均每秒从物理磁盘读取页的次数
innodb_buffer_pool_read_requests: 平均每秒从innodb缓冲池的读次数(逻辑读请求数)
innodb_buffer_pool_write_requests: 平均每秒向innodb缓冲池的写次数
innodb_buffer_pool_pages_dirty: 平均每秒innodb缓存池中脏页的数目
innodb_buffer_pool_pages_flushed: 平均每秒innodb缓存池中刷新页请求的数目
innodb缓冲池的读命中率
innodb_buffer_read_hit_ratio = ( 1 - Innodb_buffer_pool_reads/Innodb_buffer_pool_read_requests) * 100
Innodb缓冲池的利用率
Innodb_buffer_usage = ( 1 - Innodb_buffer_pool_pages_free / Innodb_buffer_pool_pages_total) *
100
7. innodb日志
innodb_os_log_fsyncs: 平均每秒向日志文件完成的fsync()写数量
innodb_os_log_written: 平均每秒写入日志文件的字节数
innodb_log_writes: 平均每秒向日志文件的物理写次数
innodb_log_write_requests: 平均每秒日志写请求数
8. innodb行
innodb_rows_deleted: 平均每秒从innodb表删除的行数
innodb_rows_inserted: 平均每秒从innodb表插入的行数
innodb_rows_read: 平均每秒从innodb表读取的行数
innodb_rows_updated: 平均每秒从innodb表更新的行数
innodb_row_lock_waits: 一行锁定必须等待的时间数
innodb_row_lock_time: 行锁定花费的总时间,单位毫秒
innodb_row_lock_time_avg: 行锁定的平均时间,单位毫秒
9. MyISAM读写次数
key_read_requests: MyISAM平均每秒钟从缓冲池中的读取次数
Key_write_requests: MyISAM平均每秒钟从缓冲池中的写入次数
key_reads : MyISAM平均每秒钟从硬盘上读取的次数
key_writes : MyISAM平均每秒钟从硬盘上写入的次数
10. MyISAM缓冲池
MyISAM平均每秒key buffer利用率
Key_usage_ratio =Key_blocks_used/(Key_blocks_used+Key_blocks_unused)*100
MyISAM平均每秒key buffer读命中率
Key_read_hit_ratio=(1-Key_reads/Key_read_requests)*100
MyISAM平均每秒key buffer写命中率
Key_write_hit_ratio =(1-Key_writes/Key_write_requests)*100
11. 临时表
Created_tmp_disk_tables: 服务器执行语句时在硬盘上自动创建的临时表的数量
Created_tmp_tables: 服务器执行语句时自动创建的内存中的临时表的数量
Created_tmp_disk_tables/Created_tmp_tables比值最好不要超过10%,如果Created_tmp_tables值比较大,可能是排序句子过多或者连接句子不够优化
12. 其他
slow_queries: 执行时间超过long_query_time秒的查询的个数(重要)
sort_rows: 已经排序的行数
open_files: 打开的文件的数目
open_tables: 当前打开的表的数量
select_scan: 对第一个表进行完全扫描的联接的数量
此外,还有一些性能指标不能通过mysqladmin extended-status或show global status直接得到,但是十分重要。
13. response time: 响应时间
Percona提供了tcprstat工具统计响应时间,此功能默认是关闭的,可以通过设置参数query_response_time_stats=1打开这个功能。
有两种方法查看响应时间:
(1)通过命令SHOW QUERY_RESPONSE_TIME查看响应时间统计;
(2)通过INFORMATION_SCHEMA里面的表QUERY_RESPONSE_TIME来查看。
http://www.orczhou.com/index.php/2011/09/thanks-percona-response-time-distribution/comment-page-1/(参考文章)
14. Slave delay: 备库延迟
可以在slave节点上执行show slave status\G命令,Seconds_Behind_Master项的值即为slave当前的延时量,单位秒。

MySQL性能指标及计算方法的更多相关文章
- MySQL性能指标及计算方法(go)
绝大多数MySQL性能指标可以通过以下两种方式获取: (1)mysqladmin 使用mysqladmin extended-status命令获得的MySQL的性能指标,默认为累计值.如果想了解当前状 ...
- MySQL性能指标及计算方法 等待show processlist
http://www.cnblogs.com/cyt1153/p/6697847.html http://www.cnblogs.com/cyt1153/tag/mysql/
- MySQL性能指标计算方式
-- 生成报告文件到/tmp目录中 tee /tmp/mysql_performance_stat.txt -- 统计性能指标前先开启下列参数,该参数使用IS数据库来存放数据库信息,由于使用PS库存放 ...
- mysql 性能指标
qps 每秒处理的查询数tps 每秒处理的事务数IOPS 每秒磁盘进行的I/O操作次数 一.TPS:Transactions Per Second(每秒传输的事物处理个数),即服务器每秒处理的事务数. ...
- 使用mysqladmin ext了解MySQL运行状态【转】
摘要: mysqladmin是 MySQL一个重要的客户端,最常见的是使用它来关闭数据库,除此,该命令还可以了解MySQL运行状态.进程信息.进程杀死等.本文介绍一下如何使用 mysqladmin e ...
- Zabbix自带模板监控MySQL
先使用主机链接Mysql模板 . 然后写获取mysql状态的脚本,即配合zabbix模板里面的参数的脚本. #!/bin/bash MYSQL_USER='zabbix' #这里为在本地数据库授权的账 ...
- 【mysql】使用脚本对mysql状态进行监控
1.mysqladmin 使用mysqladmin extended-status命令可以获得所有MySQL性能指标,即show global status的输出,不过,因为多数这些指标都是累计值,如 ...
- 分布式数据存储 - Zabbix监控MySQL性能
Zabbix如何监控mysql性能,我们可以使用mysql自带的模板,可以监控如下内容:OPS(增删改查).mysql请求流量带宽,mysql响应流量带宽,最后会附上相应的监控图! 编写check_m ...
- 使用mysqladmin ext 了解MySQL运行状态 转
https://yq.aliyun.com/articles/11210?spm=0.0.0.0.HpobXF 1. 使用-r/-i参数 使用mysqladmin extended-status命令可 ...
随机推荐
- 第一章 基本的SQL语句 (SQL基础)
1. 查询数据库系统时间,常以服务器默认的格式进行显示(根据数据库的字符集而定): 注意:dual 为数据库中的虚表,隶属于管理员 sys 用户,但所有的用户都可以访问:无实际意义,仅充当select ...
- Eclipse 中隐藏的 5 个非常有用的功能
Eclipse就是一头野兽.它也是一套设备,神秘但更具威力.有些人称它为一个持续变形机.另一些人则称它是一个变异体.不错,它很庞大,需要花费多年才能掌握.而在你好不容易掌握之后,你的老板出现了然后告诉 ...
- easy ui 表单提交添加遮罩,避免数据重复提交
如下图: //点击提交按钮保存数据 $('#btn_submit').click(function () { //增加遮罩层 $.messager.progress({ title: '温馨提示', ...
- XSS 复合编码 续
对上文 [web安全]第二弹:XSS攻防中的复合编码问题 的一些补充,思路来源于:http://escape.alf.nu/3/ html解码的问题: 通过appendChild添加的节点,不会被HT ...
- poi导出到excel步骤分析
在没用过poi之前感觉poi是很高大上的样子, 项目中用了发现poi的代码重复性很高类似于jdbc的模板代码, 项目中如果大量使用最好封装起来; 总结一下归结为6步 1 打开或新创建一个工作薄(使用H ...
- Ext.Ajax.request()方法和FormPanel.getForm().submit()方法,都返回success()方法的差异
我还是不发表到博客园首页吧,要不然还是要被取消,>_< 还是言归正传吧,关于Ext.Ajax.request()方法和FormPanel.getForm().submit()方法返回suc ...
- bnuoj 4187 GCC (数论)
http://www.bnuoj.com/bnuoj/problem_show.php?pid=4187 [题意]:如题 [题解]:取n,m的最小值进行遍历就可以了: 注意 0 1 这组测试数据 [c ...
- ssh scp访问ipv6地址
从这里学来的.http://blog.mattandanne.org/2012/01/sftpscp-and-ipv6-link-local-addresses.html当采用ipv6的地址去连接另外 ...
- [转载]JQuery的Ajax跨域请求的解决方案
今天在项目中需要做远程数据加载并渲染页面,直到开发阶段才意识到ajax跨域请求的问题,隐约记得Jquery有提过一个ajax跨域请求的解决方式,于是即刻翻出Jquery的API出来研究,发现JQuer ...
- ubuntu的vi
ubuntu12.04的vi 1. 安装vim full版本由于Ubuntu预安装的是tiny版本,就会导致我们在使用上的产生不便.所以我们要安装vim的full版本.首先,先卸掉旧版的vi,输入以下 ...