设为首页 收藏本站
查看: 334|回复: 0

[经验分享] MySQL 状态变量(Server Status Variables)

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-10-11 08:59:37 | 显示全部楼层 |阅读模式
MySQL状态变量是当前服务器自启动后累计的一些系统状态信息,主要用于评估当前系统资源的使用情况以进一步分析系统性能而做出相应的调整决策。这些状态变量我们可以理解为等同于Oracle数据库的动态性能视图。MySQL的状态变量有很多,比如SQL执行频率,索引的使用情况,锁资源的使用情况等等。状态变量可以分区全局以及会话级别的状态变量。状态变量不可修改,为只读属性,由系统更新。本文演示了状态变量的一些示例,仅为抛砖引玉之用。



1、状态变量
   反映当前mysql数据库服务器自当次启动以来的累计相关状态信息,分为会话级与全局级别状态信息。
   与系统变量类似,有些状态变量有全局和会话级别,而有些只有全局级别。如binlog_cache_disk_use仅有全局状态,而bytes_sent两者都有。
   可以通过show status like '%variable_name%' 或者show global status like '%variable_name%'来查看。
   在未使用Like的情形下show status会显示全部的状态变量。
   可以通过查询系统表information_schema.global_status以及information_schema.session_status来获取状态变量信息。
   可以在命令行下通过mysqladmin extended-status方式来获取状态变量的相关信息。
   可以通过命令行方式mysqladmin extended-status -r -i 5或innotop持续观察状态变量的改变情况。
   一些状态变量重可以用FLUSH STATUS语句重置为零值。



2、show方式查看状态变量


    --当前演示环境  
    root@localhost[(none)]> show variables like 'version';  
    +---------------+------------+  
    | Variable_name | Value      |  
    +---------------+------------+  
    | version       | 5.5.39-log |  
    +---------------+------------+  
      
    a、查看所有状态变量  
    root@localhost[(none)]> show status;  
    +------------------------------------------+-------------+  
    | Variable_name                            | Value       |  
    +------------------------------------------+-------------+  
    | Aborted_clients                          | 0           |  
    | Binlog_stmt_cache_use                    | 1           |  
    | Bytes_received                           | 135         |  
    | Bytes_sent                               | 266         |  
    |               ................           |             |   
    | Threads_running                          | 1           |  
    | Uptime                                   | 76242       |  
    | Uptime_since_flush_status                | 76242       |  
    +------------------------------------------+-------------+  
    312 rows in set (0.00 sec)   --可以看出当前版本5.5.39有312个状态变量  
      
      
    b、查看仅有global的状态变量(connections)              
    --查看指定的状态变量,以下两个与connection相关的都为全局状态变量  
    root@localhost[(none)]> show global status like 'connection%';  
    +----------------------+-------+  
    | Variable_name        | Value |  
    +----------------------+-------+  
    | Connections          | 11    | --连接到MySQL服务器的数量(包含成功或失败的)。  
    +----------------------+-------+  
      
    suse11b:~ # mysql -ufred  
      
    fred@localhost[(none)]> show global status like '%connection%';  
    +----------------------+-------+  
    | Variable_name        | Value |  
    +----------------------+-------+  
    | Connections          | 12    | --连接之后,我们看到Connections的值变为12了。  
    +----------------------+-------+  
      
      
    c、查看既有global又有session状态的变量  
    --查看session状态变量opened_tables  
    root@localhost[tempdb]> show session status like 'opened_tables';  
    +---------------+-------+  
    | Variable_name | Value |  
    +---------------+-------+  
    | Opened_tables | 0     |  
    +---------------+-------+  
      
    root@localhost[tempdb]> select count(*) from tb_slow;  
    +----------+  
    | count(*) |  
    +----------+  
    |   424448 |  
    +----------+  
      
    root@localhost[tempdb]> show session status like 'opened_tables';  
    +---------------+-------+  
    | Variable_name | Value |  
    +---------------+-------+  
    | Opened_tables | 1     | --值变为1  
    +---------------+-------+  
      
    --从information_schema.session_status表查询状态变量OPENED_TABLES  
    root@localhost[tempdb]> select * from information_schema.session_status  
        -> where variable_name like 'opened_tables';  
    +---------------+----------------+  
    | VARIABLE_NAME | VARIABLE_VALUE |  
    +---------------+----------------+  
    | OPENED_TABLES | 1              |  
    +---------------+----------------+  
      
    --查看全局状态变量opened_tables  
    root@localhost[tempdb]> show global status like 'opened_tables';  
    +---------------+-------+  
    | Variable_name | Value |  
    +---------------+-------+  
    | Opened_tables | 54    |   
    +---------------+-------+  
      
    root@localhost[tempdb]> select count(*) from mysql.db;  
    +----------+  
    | count(*) |  
    +----------+  
    |        2 |  
    +----------+  
      
    root@localhost[tempdb]> show global status like 'opened_tables';  
    +---------------+-------+  
    | Variable_name | Value |  
    +---------------+-------+  
    | Opened_tables | 55    |  --值变为55  
    +---------------+-------+  
      
    --从information_schema.global_status表查询状态变量OPENED_TABLES  
    root@localhost[tempdb]> select * from information_schema.global_status  
        -> where variable_name like 'opened_tables';  
    +---------------+----------------+  
    | VARIABLE_NAME | VARIABLE_VALUE |  
    +---------------+----------------+  
    | OPENED_TABLES | 55             |   
    +---------------+----------------+  
      
    --清洗状态变量统计信息  
    root@localhost[tempdb]> flush status;  
    Query OK, 0 rows affected (0.00 sec)  
      
    --下面的查询结果可以看出,session级别的opened_tables被重置为0  
    root@localhost[tempdb]> show session status like 'opened_tables';  
    +---------------+-------+  
    | Variable_name | Value |  
    +---------------+-------+  
    | Opened_tables | 0     |  
    +---------------+-------+  
      
    --Author: Leshami  
    --Blog  : http://blog.iyunv.com/leshami  
      
    --而全局级别的opened_tables未受到任何影响  
    root@localhost[tempdb]> show global status like 'opened_tables';  
    +---------------+-------+  
    | Variable_name | Value |  
    +---------------+-------+  
    | Opened_tables | 55    |  
    +---------------+-------+  

3、使用mysqladmin extended-status获取状态变量


    suse11b:~ # mysqladmin extended-status|grep Connections  
    | Connections                              | 18          |  
    suse11b:~ # mysql  
      
    root@localhost[(none)]> system mysqladmin extended-status|grep Connections  
    | Connections                              | 20          |  
    root@localhost[(none)]> exit  
    Bye  
    suse11b:~ # mysqladmin --help |more    #mysqladmin与状态变量有关的使用  
    extended-status       Gives an extended status message from the server  
    flush-status          Clear status variables  



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-25798-1-1.html 上篇帖子: MySQL 慢查询日志(Slow Query Log) 下篇帖子: mysql基本操作
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表