>  기사  >  데이터 베이스  >  MySQL 状态变量(Server Status Variables)

MySQL 状态变量(Server Status Variables)

WBOY
WBOY원래의
2016-06-07 16:44:42877검색

MySQL状态变量是当前服务器自启动后累计的一些系统状态信息,主要用于评估当前系统资源的使用情况以进一步分析系统性能而做出相应

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              |
+---------------+----------------+

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.