性能调优的方法及概念
SHOW STATUS;
FLUSH STATUS;
查看当前连接数 SHOW STATUS LIKE 'Thread_%';
Thread_cached:被缓存的线程的个数
Thread_running:处于激活状态的线程的个数
Thread_connected:当前连接的线程的个数
Thread_created:总共被创建的线程的个数
Thread cache hits
Thread_connected = SHOW GLOBAL STATUS LIKE Thread_created;
Connections = SHOW GLOBAL STATUS LIKE 'Connections';
TCH=(1 - (Threads_created / Connections)) * 100
查看活动连接内容
SHOW PROCESSLIST;
如果 TCH数小于90%,创建连接耗费了时间,增大Thread_cached数量
QPS (每秒查询处理量)MyISAM 引擎
Questions = SHOW GLOBAL STATUS LIKE 'Questions';
Uptime = SHOW GLOBAL STATUS LIKE 'Uptime';
QPS=Questions/Uptime
TPS(每秒传输的事物处理个数),即服务器每秒处理的事务数,如果是InnoDB会显示,没有InnoDB就不会显示。
Com_commit = SHOW GLOBAL STATUS LIKE 'Com_commit';
Com_rollback = SHOW GLOBAL STATUS LIKE 'Com_rollback';
Uptime = SHOW GLOBAL STATUS LIKE 'Uptime';
TPS=(Com_commit + Com_rollback)/Uptime
QPS 和 TPS值一定要实时监控,如果接近架构搭建时的测试峰值,愿上帝与你同在
Read/Writes Ratio
Qcache_hits = SHOW GLOBAL STATUS LIKE 'Qcache_hits';
Com_select = SHOW GLOBAL STATUS LIKE 'Com_select';
Com_insert = SHOW GLOBAL STATUS LIKE 'Com_insert';
Com_update = SHOW GLOBAL STATUS LIKE 'Com_update';
Com_delete = SHOW GLOBAL STATUS LIKE 'Com_delete';
Com_replace = SHOW GLOBAL STATUS LIKE 'Com_replace';
R/W=(Com_select + Qcache_hits) / (Com_insert + Com_update + Com_delete + Com_replace) * 100
读写比,优化数据库的重要依据,读的多就去优化读,写的多就去优化写
Slow queries per minute
Slow_queries = SHOW GLOBAL STATUS LIKE 'Slow_queries';
Uptime = SHOW GLOBAL STATUS LIKE 'Uptime';
SQPM=Slow_queries / (Uptime/60)
Slow queries /Questions Ratio
Slow_queries = SHOW GLOBAL STATUS LIKE 'Slow_queries';
Questions = SHOW GLOBAL STATUS LIKE 'Questions';
S/Q=Slow_queries/Questions
新版本上线时要着重关注慢查询,让测试去踢开发者的屁股吧
Full_join per minute
Select_full_join = SHOW GLOBAL STATUS LIKE 'Select_full_join';
Uptime = SHOW GLOBAL STATUS LIKE 'Uptime';
FJPM=Select_full_join / (Uptime/60)
没有使用索引而造成的full_join,优化索引去吧
Innodb buffer read hits
Innodb_buffer_pool_reads = SHOW GLOBAL STATUS LIKE 'Innodb_buffer_pool_reads';
Innodb_buffer_pool_read_requests = SHOW GLOBAL STATUS LIKE 'Innodb_buffer_pool_read_requests';
IFRH=(1 - Innodb_buffer_pool_reads/Innodb_buffer_pool_read_requests) * 100
InnoDB Buffer命中率 目标 95%-99%;
Table Cache
Open_tables= SHOW GLOBAL STATUS LIKE 'Open_tables';
Opened_tables= SHOW GLOBAL STATUS LIKE 'Opened_tables';
table_cache= SHOW GLOBAL STATUS LIKE 'table_cache';
table_cache应该大于 Open_tables 小于 Opened_tables
Temp tables to Disk ratio
Created_tmp_tables = show global status like 'Created_tmp_tables';
Created_tmp_disk_tables = show global status like 'Created_tmp_disk_tables';
TDR=(Created_tmp_disk_tables/Created_tmp_tables)*100
SHOW GLOBAL STATUS LIKE 'Innodb_row_lock_%';
Innodb_row_lock_current_waits
The number of row locks currently being waited for. Added in MySQL 5.0.3.
Innodb_row_lock_time
The total time spent in acquiring row locks, in milliseconds. Added in MySQL 5.0.3.
-
The average time to acquire a row lock, in milliseconds. Added in MySQL 5.0.3.
Innodb_row_lock_time_max
The maximum time to acquire a row lock, in milliseconds. Added in MySQL 5.0.3.
-
The number of times a row lock had to be waited for. Added in MySQL 5.0.3.
——————————————————————————————————————————————————
ps -ef | grep "mysql" | grep -v "grep" | wc –l
mysql > show status like 'Slave_running';
mysql > show status like 'Threads_connected';
当前客户端已连接的数量。这个值会少于预设的值,但你也能监视到这个值较大,这可保证客户端是处在活跃状态。
mysql > show status like 'Threads_running';
mysql > show status like 'Aborted_clients';
客户端被异常中断的数值,即连接到mysql服务器的客户端没有正常地断开或关闭。对于一些应用程序是没有影响的,但对于另一些应用程序可能你要跟踪该值,因为异常中断连接可能表明了一些应用程序有问题。
mysql> show status like 'Questions';
每秒钟获得的查询数量,也可以是全部查询的数量,根据你输入不同的命令会得到你想要的不同的值。
mysql> show status like 'Handler_%';
如果你想监视底层(low-level)数据库负载,这些值是值得去跟踪的。
如果Handler_read_rnd_next值相对于你认为是正常值相差悬殊,可能会告诉你需要优化或索引出问题了。Handler_rollback表明事务被回滚的查询数量。你可能想调查一下原因。
mysql> show status like 'Opened_tables';
表缓存没有命中的数量。如果该值很大,你可能需要增加table_cache的数值。典型地,你可能想要这个值每秒打开的表数量少于1或2。
mysql> show status like 'Select_full_join';
没有主键(key)联合(Join)的执行。该值可能是零。这是捕获开发错误的好方法,因为一些这样的查询可能降低系统的性能。
mysql> show status like 'Select_scan';
执行全表搜索查询的数量。在某些情况下是没问题的,但占总查询数量该比值应该是常量(即Select_scan/总查询数量商应该是常数)。如果你发现该值持续增长,说明需要优化,缺乏必要的索引或其他问题。
mysql> show status like 'Slow_queries';
超过该值(--long-query-time)的查询数量,或没有使用索引查询数量。对于全部查询会有小的冲突。如果该值增长,表明系统有性能问题。
mysql> show status like 'Threads_created';
该值应该是低的。较高的值可能意味着你需要增加thread_cache的数值,或你遇到了持续增加的连接,表明了潜在的问题。
该语句产生很多信息,从中你可以得到你感兴趣的。首先你要检查的就是“从最近的XX秒计算出来的每秒的平均负载”。
(1)Pending normal aio reads: 该值是innodb io请求查询的大小(size)。如果该值大到超过了10—20,你可能有一些瓶颈。
(2)reads/s, avg bytes/read, writes/s, fsyncs/s:这些值是io统计。对于reads/writes大值意味着io子系统正在被装载。适当的值取决于你系统的配置。
(3)Buffer pool hit rate:这个命中率非常依赖于你的应用程序。当你觉得有问题时请检查你的命中率
(4)inserts/s, updates/s, deletes/s, reads/s:有一些Innodb的底层操作。你可以用这些值检查你的负载情况查看是否是期待的数值范围。
在服务器正常完成初始化后,什么都不会写到错误日志中,因此任何在该日志中的信息都要引起管理员的注意。
20.InnoDB表空间信息
InnoDB仅有的危险情况就是表空间填满----日志不会填满。检查的最好方式就是:show table status;你可以用任何InnoDB表来监视InnoDB表的剩余空间。
QPS = Questions(or Queries) / seconds
mysql > show /* global */ status like 'Question';
TPS = (Com_commit + Com_rollback) / seconds
mysql > show status like 'Com_commit';
mysql > show status like 'Com_rollback';
key_buffer_read_hits = (1-key_reads / key_read_requests) * 100%
key_buffer_write_hits = (1-key_writes / key_write_requests) * 100%
mysql> show status like 'Key%';
Innodb_buffer_read_hits = (1 - innodb_buffer_pool_reads / innodb_buffer_pool_read_requests) * 100%
mysql> show status like 'innodb_buffer_pool_read%';
Query_cache_hits = (Qcahce_hits / (Qcache_hits + Qcache_inserts )) * 100%;
mysql> show status like 'Qcache%';
mysql> show status like 'open%';
Thread_cache_hits = (1 - Threads_created / connections ) * 100%
mysql> show status like 'Thread%';
mysql> show status like 'Connections';
mysql> show status like '%lock%';
mysql > show status like 'Create_tmp%';
转载于:https://www.cnblogs.com/yuqiandoudou/p/4665537.html
性能调优的方法及概念相关推荐
- 从蚂蚁金服裸辞,京东三面遭调优猛击,闭关俩月啃完653页性能调优实战手册,拿到京东offer
性能优化是很多 Java 程序员希望彻底掌握的一门技能.很多人都想学好性能优化,希望能够在自己的工作中灵活运用提高性能,从而为用户提供良好的用户体验.然而,很多人在设计技术方案或者编码时缺乏系统地.方 ...
- 上线半天下载量破100W!美团大佬的Java性能调优实战手册,超详细
随着互联网的发展,高可靠.高并发以及降本增效,已成为各大公司面临的现实挑战,性能优化需求愈发迫切,大到分布式系统,小到代码块的算法优化,都已经成为你日常工作中必须要面对的事情.对于开发者而言,性能优化 ...
- 十八般武艺玩转GaussDB(DWS)性能调优:总体调优策略
摘要: 性能调优是应用迁移或开发过程中的关键步骤,同时也在整个项目实施过程中占据很大的份量,本篇主要介绍数据库级别的性能调优思路和总体策略. 性能调优是应用迁移或开发过程中的关键步骤,同时也在整个项目 ...
- 深扒,用 6 部分讲完 Java 性能调优:多线程 + 设计模式 + 数据库
Java 性能调优 Java 性能调优,是一个老生常谈的话题.可能有些人觉得没用,一些细小的地方没有好修改的,改与不改对于代码的运行效率有什么影响呢? Java 性能调优不单单是学一门编程语言那么简单 ...
- SPDK RBD bdev性能调优
前言 在前文[1]中,我们简述了SPDK中RBD bdev模块以及所依赖的librbd接口的调用方法.本文就SPDK RBD bdev结合Ceph RBD的使用进行更为深入的探讨,并结合实际的应 ...
- 深扒!从六个角度深度剖析Java性能调优,附带实战演练
让你的Java程序更快.更稳定 程序的性能受代码质量的直接影响.那么该如何让代码在级别上提升系统性能呢? 其实性能提升永远没有捷径,需要 分析.优化.实验.监控 ,需要一点点积累和深入.随着你对项目和 ...
- linux mysql数据库优化_MySQL_Linux下MySQL数据库性能调优方法,以下的环境具备一定的代表性 - phpStudy...
Linux下MySQL数据库性能调优方法 以下的环境具备一定的代表性,可以说是中小企业一般配置和工作环境.希望通过本文能让大家理解Linux下MySQL数据库性能调优方法. 硬件准备环境: 硬盘: 1 ...
- spark 算子例子_Spark性能调优方法
公众号后台回复关键词:pyspark,获取本项目github地址. Spark程序可以快如闪电⚡️,也可以慢如蜗牛?. 它的性能取决于用户使用它的方式. 一般来说,如果有可能,用户应当尽可能多地使用S ...
- 透明大页相关内核参数_Alibaba Cloud Linux 2系统中与透明大页THP相关的性能调优方法...
免责声明:本文档可能包含第三方产品信息,该信息仅供参考.阿里云对第三方产品的性能.可靠性以及操作可能带来的潜在影响,不做任何暗示或其他形式的承诺. 概述 本文主要介绍在Alibaba Cloud Li ...
最新文章
- module 'tensorflow' has no attribute 'Session'
- index row函数出现日期变数字_VBA-003.多表日期汇总求和
- CodeForces - 1331E Jordan Smiley(图形转换)
- 又拍云php表单,又拍云的表单api提交
- c# 多线程实现ping 多线程控制控件
- UE4之模型格式介绍
- 数据库设计-电话号码长度
- 四元数与欧拉角之间的换算关系
- Fragment如何实现左右分屏显示的
- 更换新硬盘,重新装回正版win10的方法
- 进程篇——了解Makefile文件
- 倾斜摄影自动化建模成果的数据组织和单体化
- maya2018界面菜单充满屏幕无法恢复解决方法
- 缘起缘落skycc推广软件
- 家用 NAS 服务器搭建 | 网络 | DNS域名解析
- CCS+C6678LE开发记录11:多核协作(IPC)入门
- 友善之臂编linux内核,友善之臂mini 6410 n43平台的内核编译
- 元宇宙:6层框架和3个核心底层技术
- 怎么用Python批量将ppt转换为pdf
- 在一个类的成员函数中调用另一个类的成员函数
热门文章
- BZOJ3196 二逼平衡树 ZKW线段树套vector(滑稽)
- 动画效果-基础动画设置(改变大小,改变透明度,翻转,旋转,复原)
- ios category类别的使用
- Xcode6 管理provisioning profile
- Android的布局
- URL中使用IPv4,IPv6和主机名
- python父亲节礼物_父亲节程序员硬核示爱:你能看懂几条
- 四天学会Mybatis
- java 中的 Math.round(-1.5) 等于多少?
- 在redis取数据若存在直接取,不存在在db中取,并放到缓存中