MySQL Status提供服务器状态信息,是单纯的累计数(如重启就会重置),表面上只能体现多和少。但这些统计值,如zabbix,prometheus监控平台一样,通过某个时间间隔的差值,体现MySQL某种偏向的执行情况。比如临时表使用比较多,底层page交换频繁凡 等。Status统计信息是日常监控的部分核心数据,也是问题排查中非常有意义的参考数据。

mysql > SHOW [GLOBAL | SESSION] STATUS[LIKE 'pattern' | WHERE expr]

STATUS

1.执行情况

性能指标(TPS,QPS)是衡量数据库的能力的一个标准。这些指标依据也是通过Status里计算的。
QPS(Queries Per Second,每秒查询数)=Com_select
TPS(Transactions Per Second,每秒处理事务数)=Com_insert + Com_delete + Com_update

指标 说明
Questions 服务器收到的查询和命令的总数
Com_select 执行select语句的总数
Com_insert 执行insert语句的
Com_delete 执行delete语句的
Com_update 执行update语句的

2.SQL质量情况

对于mysql来说随着数据量增加 全表扫描,不使用索引,排序,回滚 这些现象对于MySQL是最致命的。大量消耗mysql处理能力,服务器资源(硬盘io,cpu资源 等)。

指标 说明
Slow_queries 积累的慢日志数量
Select_full_join 全表join
Select_full_range_join 全表范围join
Select_scan 单表全表扫描次数
Sort_scan 通过扫描表完成的排序数
Com_rollback sql语句回滚
Handler_rollback 回滚一个事务的请求的个数

3.临时表利用率

临时表多,说明多表join产生大量的中间表,排序无索引,聚合等。最终会趋向于语句执行越来越慢 等问题。

指标 说明
Created_tmp_disk_tables 临时表落盘次数
Created_tmp_files 创建临时文件次数
Created_tmp_tables 临时表使用次数

关注下临时表设置是否合理(tmp_table_size,max_heap_table_size),临时表缓存 大概16M~128M既可以,如果已经非常大,说明SQL要进行优化.

4.文件表数量

说明底层ibd,frm 文件太多 或 操作系统 /etc/security/limits.conf设置太小导致

指标 说明
open_tables 当前mysql数据库打开的表数量
open_files mysql数据库的server层当前正打开的文件数据
Table_open_cache_overflows 表缓存溢出次数,如果大于0,可以增大table_open_cache和table_open_cache_instances
Innodb_num_open_files innodb当前打开的文件数量
Table_open_cache_misses 需要先检索此表已经存在于table_cache中,如果不存在,需要新构建,需要添加table_open_cache,table_definition_cache

需要协调的参数有5个需要按照实际情况进行调整:

  • innodb_open_files
  • open_files_limit
  • table_open_cache
  • table_open_cache_instances
  • table_space_definition_cache

5.底层page相关操作

innodb引擎对于page的操作。

  • 特别是Handler_read_rnd_next 对于性能影响非常大。主要体现SQL语句方面不使用索引,全表扫描情况。
  • 大数据量随机读之类的。
status 说明
Handler_read_first 此选项表明SQL是在做一个全索引扫描,注意是全部,而不是部分,所以说如果存在WHERE语句,这个选项是不会变的。
Handler_read_key 此选项数值如果很高,系统高效的使用了索引,一切运转良好。
Handler_read_next 此选项表明在进行索引扫描时,按照索引从数据文件里取数据的次数。
Handler_read_prev 此选项表明在进行索引扫描时,按照索引倒序从数据文件里取数据的次数,一般就是ORDER BY … DESC
Handler_read_rnd_next 此选项表明在进行数据文件扫描时,从数据文件里取数据的次数。

6.binlog情况

binlog是逻辑写入,一旦变更量多之后(insert,delete,update,ddl),binlog缓存刷新频率过高,影响一定的性能,带来迟缓效应。

指标 说明
Binlog_cache_disk_use 事务引擎因binlog缓存不足而用到临时文件的次数,如果这个值过大,可以通过增大binlog_cache_size来解决
Binlog_stmt_cache_disk_use 非事务引擎因binlog缓存不足而用到临时文件的次数,如果这个值过大,可以通过增大binlog_stmt_cache_size来解决

binlog_cache_size默认是32k,建议范围在1M~16M以内 ,如果超过这个值 就会使用临时表,所以MySQL不适合一些大事务。

7.线程

线程信息往往代表mysql链接情况。比如频繁的短连接可能对于mysql穷住,内存无法释放等问题。
当前执行的线程数也不能太多,会达到处理的瓶颈。

指标 说明
Threads_cached 线程缓存所能容纳的线程的最大个数.断开的mysql连接会放到这个缓存里,新建立的连接就会重复使用它们而不创建新的线程
Threads_connected 已连接过的线程总数
Threads_created 为处理连接创建的线程总数
Threads_running 当前执行的线程数

8.链接错误

当通信故障错误出现时,MySQL的状态变量Aborted_clients和Aborted_connects的计数会增加。这两个状态变量描述了链接中断,登录MySQL失败的计数。

  • 客户端无权限,密码有误,连接包错误,连接时间限制,客户端没有进行关闭,突然终止 等。
  • 参数timeout不合理也会出现这些值上升。(connect_timeout,wait_timeout,interactive_timeout net_read_timeout,net_write_timeout)
指标 说明
Aborted_clients 由于客户端未正确关闭连接而死亡而中止的连接数
Aborted_connects 连接MySQL服务器失败次数

9.DDL情况

经验告诉,在MySQL使用触发器,存储过程,函数等存在很多隐患。

指标 说明
Com_create_trigger 创建触发器
Com_create_procedure 创建存储过程
Com_create_event 创建event事件
Com_create_view 创建视图
Com_create_udf 创建自定义函数
Com_call_procedure 执行存储过程
Com_load load命令调用
Com_stmt_prepare 预处理语句

10.其他

指标 说明
Uptime 服务器最后一次启动以来的的秒数。
Com_flush 表示执行了多少FLUSH语句
Last_query_cost session会话作用域,由查询优化器计算的最后一个已编译查询的总成本
Locked_connects 连接锁定用户帐户的尝试次数
Com_lock_instance instance实例锁住次数
Com_lock_tables 锁表次数
Table_locks_waited 对表锁的请求不能立即被授予,需要等待的次数
Innodb_os_log_pending_fsyncs InnoDB重做日志中挂起的fsync()操作的次数。
Innodb_os_log_pending_writes 挂起写入InnoDB重做日志文件的次数。
Innodb_data_pending_fsyncs 当前挂起的fsync()操作数

总结

Status计数,不仅是监控需要的指标,也是日常排查问题的一种判断推理依据。

MySQL Status意义相关推荐

  1. mysql status关键字 数据表设计中慎重使用

    mysql status关键字  数据表设计中慎重使用 转载于:https://www.cnblogs.com/toSeeMyDream/p/5574894.html

  2. mysql status改变_mysql 配置详解mysql SHOW STATUS 详解

    1. back_log 指定MySQL可能的连接数量.当MySQL主线程在很短的时间内得到非常多的连接请求,该参数就起作用,之后主线程花些时间(尽管很短)检查连接并且启动一个新线程. back_log ...

  3. mysql status lock_MySQL性能突发事件问题排查技巧

    经过多年的实际经验,整理了一些材料,已Linux环境下MySQL性能突发事件问题排查技巧分享给大家. 作为DBA在面对性能上突发问题的时候,是否出现过束手无策,无从下手的经历. 其实性能无非问题点在于 ...

  4. mysql status uptime_MySQL优化(四) 慢查询的定位及优化

    一.SQL语句优化的一般步骤: (1)通过 show status 命令了解各种 SQL 的执行效率: (2)定位执行效率较低的 SQL 语句(重点是 Select): (3)通过 explain 分 ...

  5. mysql status questions_运行中的mysql状态查看

    运行中的mysql状态查看 对正在运行的mysql进行监控,其中一个方式就是查看mysql运行状态. (1)QPS(每秒Query量) QPS = Questions(or Queries) / se ...

  6. mysql数据库每秒能写入多少条数据_数据库插入速度能有50W每秒吗

    写入速度 MySQL每秒可以插入50w条记录吗? 带着疑问,我们一起看看mysql每秒可以插入多少条记录? 要回答这个问题,首先要考虑影响mysql插入速度的因素有哪些? 硬盘的速度,网卡的速度,写入 ...

  7. mysql send-q_MYSQL---初识

    相关概念说明数据库(Database):按照数据结构来组织.存储和管理数据的仓库,它以一定的组织形式存于存储介质上.数据库本身不真正存储数据,真正的数据是放在数据库中的表(table)中的. 数据库管 ...

  8. mysql字符调整_mysql字符集调整

    . b.其中的connection是连接数据库的字符集设置类型,如果php没有指明连接数据库使用的字符集类型 就按照服务器端默认的字符集设置. c.其中database是数据库服务器中某个库使用的字符 ...

  9. linux上mysql卸数_Linux下MySQL卸载和安装图文教程

    Linux下MySQL卸载和安装图文教程 发布时间:2020-09-02 08:43:17 来源:脚本之家 阅读:59 作者:伊宇紫 第一次写博客,做了两年的开发,工作之余给自己找点有意义的事做,分享 ...

最新文章

  1. javap查看class文件
  2. 1、ios开发之 内购
  3. 车位预定查询html格式,停车场车位预定方法
  4. 使用网络存储SAN和NAS
  5. dcnctf-web-wp(部分)
  6. 今天,我要在睡梦里,和死神握握手
  7. Java命令行界面(第15部分):Jargo
  8. 「mysql优化专题」详解引擎(InnoDB,MyISAM)的内存优化攻略?(9)
  9. spring boot 开源项目汇总
  10. jQuery初识之安装与语法简介
  11. 30 个惊艳的 Bootstrap 扩展插件
  12. jqGrid Pager、Navigator和自定义按钮(转)
  13. js验证身份证营业执照组织机构代码等
  14. 论坛.newreply.php,discuz!论坛帖、删帖加减金钱值后台设定For D25sp1 4.3日整理版
  15. windows11没有ie浏览器解决办法
  16. Master 2S无线鼠标信号干扰问题
  17. Matlab之数据筛选
  18. 微信小程序vantweapp-Dialog弹出框提交表单,并还原确定按钮样式
  19. flashback使用
  20. 时间格式处理获取本年份的起止时间

热门文章

  1. 美国国防部的电子邮箱系统
  2. 《比特彗星-教程》(编辑于2023.02.08)
  3. Linux安全篇-iptables
  4. unity3D 移动平台性能优化
  5. 第一部分:简单句——第一章:简单句的核心——一、简单句的核心构成
  6. 详述numpy中的np.random.rand()、np.random.randn()、np.random.randint()、np.random.uniform()函数的用法
  7. 如何用计算机进行绘画,如何在电脑上画画
  8. Virtual COM port 该设备的驱动程序未被安装:INF中服务安装段落无效错误的处理办法
  9. 苹果android通用插头,苹果充电器插头可以给安卓手机用吗??
  10. 第二十二讲:自尊与自我实现 第二十三讲:总结(完)