MySQL 状态变量(Server Status Variables)

Posted jzdwajue

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL 状态变量(Server Status Variables)相关的知识,希望对你有一定的参考价值。

    mysql状态变量是当前server自启动后累计的一些系统状态信息,主要用于评估当前系统资源的使用情况以进一步分析系统性能而做出对应的调整决策。这些状态变量我们能够理解为等同于Oracle数据库的动态性能视图。MySQL的状态变量有非常多,比方SQL运行频率。索引的使用情况,锁资源的使用情况等等。状态变量能够分区全局以及会话级别的状态变量。状态变量不可改动。为仅仅读属性,由系统更新。本文演示了状态变量的一些演示样例。仅为抛砖引玉之用。

 

1、状态变量
   反映当前mysql数据库server自当次启动以来的累计相关状态信息,分为会话级与全局级别状态信息。
   与系统变量相似,有些状态变量有全局和会话级别。而有些仅仅有全局级别。如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方式查看状态变量

--当前演示环境
[email protected][(none)]> show variables like ‘version‘;
+---------------+------------+
| Variable_name | Value      |
+---------------+------------+
| version       | 5.5.39-log |
+---------------+------------+

a、查看全部状态变量
[email protected][(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相关的都为全局状态变量
[email protected][(none)]> show global status like ‘connection%‘;
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| Connections          | 11    | --连接到MySQLserver的数量(包括成功或失败的)。

+----------------------+-------+ suse11b:~ # mysql -ufred [email protected][(none)]> show global status like ‘%connection%‘; +----------------------+-------+ | Variable_name | Value | +----------------------+-------+ | Connections | 12 | --连接之后。我们看到Connections的值变为12了。 +----------------------+-------+ c、查看既有global又有session状态的变量 --查看session状态变量opened_tables [email protected][tempdb]> show session status like ‘opened_tables‘; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | Opened_tables | 0 | +---------------+-------+ [email protected][tempdb]> select count(*) from tb_slow; +----------+ | count(*) | +----------+ | 424448 | +----------+ [email protected][tempdb]> show session status like ‘opened_tables‘; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | Opened_tables | 1 | --值变为1 +---------------+-------+ --从information_schema.session_status表查询状态变量OPENED_TABLES [email protected][tempdb]> select * from information_schema.session_status -> where variable_name like ‘opened_tables‘; +---------------+----------------+ | VARIABLE_NAME | VARIABLE_VALUE | +---------------+----------------+ | OPENED_TABLES | 1 | +---------------+----------------+ --查看全局状态变量opened_tables [email protected][tempdb]> show global status like ‘opened_tables‘; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | Opened_tables | 54 | +---------------+-------+ [email protected][tempdb]> select count(*) from mysql.db; +----------+ | count(*) | +----------+ | 2 | +----------+ [email protected][tempdb]> show global status like ‘opened_tables‘; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | Opened_tables | 55 | --值变为55 +---------------+-------+ --从information_schema.global_status表查询状态变量OPENED_TABLES [email protected][tempdb]> select * from information_schema.global_status -> where variable_name like ‘opened_tables‘; +---------------+----------------+ | VARIABLE_NAME | VARIABLE_VALUE | +---------------+----------------+ | OPENED_TABLES | 55 | +---------------+----------------+ --清洗状态变量统计信息 [email protected][tempdb]> flush status; Query OK, 0 rows affected (0.00 sec) --以下的查询结果能够看出,session级别的opened_tables被重置为0 [email protected][tempdb]> show session status like ‘opened_tables‘; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | Opened_tables | 0 | +---------------+-------+ --Author: Leshami --Blog : http://blog.csdn.net/leshami --而全局级别的opened_tables未受到不论什么影响 [email protected][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

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

 

技术分享










以上是关于MySQL 状态变量(Server Status Variables)的主要内容,如果未能解决你的问题,请参考以下文章

mysql状态信息参数解析(show GLOBAL status)

mysql优化杂记

mysql中show status介绍一

Apache开启server-status状态查询

MySQL运行状态show status详解

mysql状态分析之show global status