status和variable

MySQL的状态变量显示MySQL服务实例的状态信息,这些状态信息是动态的,包括MySQL服务器连接的会话状态、变量信息等。默认情况下状态变量都是以大写字母开头。

查看MySQL的状态变量:

1show status;
2show session status;
3show global status;

MySQL系统变量是指MySQL服务实例的各种系统变量(包括全局系统变量、会话系统变量、静态变量),这些变量包含MySQL编译时的参数默认值,或者my.cnf配置文件里配置的参数值。系统变量是一个静态的参数,默认情况下系统变量都是小写字母。

查看MySQL的系统变量:

1show variables;
2show session variables;
3show global variables;

status常用来观测当前MySQL是否运行正常,如果不正常可尝试使用variable调整。

MySQL超时相关变量

 1show variables like '%timeout%';
 2+-------------------------------------------+----------+
 3| Variable_name                             | Value    |
 4+-------------------------------------------+----------+
 5| connect_timeout                           | 10       |
 6| delayed_insert_timeout                    | 300      |
 7| group_replication_components_stop_timeout | 31536000 |
 8| have_statement_timeout                    | YES      |
 9| innodb_flush_log_at_timeout               | 1        |
10| innodb_lock_wait_timeout                  | 50       |
11| innodb_rollback_on_timeout                | OFF      |
12| interactive_timeout                       | 28800    |
13| lock_wait_timeout                         | 31536000 |
14| net_read_timeout                          | 30       |
15| net_write_timeout                         | 60       |
16| rpl_stop_slave_timeout                    | 31536000 |
17| slave_net_timeout                         | 60       |
18| wait_timeout                              | 28800    |
19+-------------------------------------------+----------+
2014 rows in set (0.00 sec)

大多数变量都见名知义:

  • innodb_lock_wait_timeout InnoDB的锁等待时间(秒),为行级锁锁等待的时间,出现锁等待时,等待时长超过改值会导致锁等待的SQL回滚(不是整个事务),如果希望整个事务回滚可以设置innodb_rollback_on_timeout
  • innodb_rollback_on_timeout 设置为true,当遇到事务超时,会回滚整个事务
  • slave_net_timeout 复制连接超时时间,主从复制时slave从master读取binlog失败后,slave等待slave_net_timeout时间后,重新从master读取binlog。

连接相关状态和变量

 1show status like '%connect%';
 2+-----------------------------------------------+---------------------+
 3| Variable_name                                 | Value               |
 4+-----------------------------------------------+---------------------+
 5| Aborted_connects                              | 0                   |
 6| Connection_errors_accept                      | 0                   |
 7| Connection_errors_internal                    | 0                   |
 8| Connection_errors_max_connections             | 0                   |
 9| Connection_errors_peer_address                | 0                   |
10| Connection_errors_select                      | 0                   |
11| Connection_errors_tcpwrap                     | 0                   |
12| Connections                                   | 5                   |
13| Locked_connects                               | 0                   |
14| Max_used_connections                          | 1                   |
15| Max_used_connections_time                     | 2015-12-01 18:04:31 |
16| Performance_schema_session_connect_attrs_lost | 0                   |
17| Ssl_client_connects                           | 0                   |
18| Ssl_connect_renegotiates                      | 0                   |
19| Ssl_finished_connects                         | 0                   |
20| Threads_connected                             | 1                   |
21+-----------------------------------------------+---------------------+
2216 rows in set (0.00 sec)
  • Connection_errors_max_connections:当MySQL的最大并发连接数超过设置的max_connections变量的值,被拒绝的次数会记录到这个状态值里。 这个状态值过高,有可能是系统并发较高,可以考虑调大max_connections
  • Connections MySQL服务从初始化开始成功建立连接的数量,该值不断累加。
  • Max_used_connections MySQL服务从启动开始,同一时刻并发连接的最大值,如果该值很大,则有可能系统并发较高,可以考虑调大max_connections
  • Threads_connected 当前打开的连接数量。
 1 show variables like '%connect%';
 2+-----------------------------------------------+-----------------+
 3| Variable_name                                 | Value           |
 4+-----------------------------------------------+-----------------+
 5| character_set_connection                      | utf8            |
 6| collation_connection                          | utf8_general_ci |
 7| connect_timeout                               | 10              |
 8| disconnect_on_expired_password                | ON              |
 9| group_replication_recovery_reconnect_interval | 60              |
10| init_connect                                  |                 |
11| max_connect_errors                            | 100             |
12| max_connections                               | 151             |
13| max_user_connections                          | 0               |
14| performance_schema_session_connect_attrs_size | 512             |
15+-----------------------------------------------+-----------------+

max_connections:MySQL实例同时接受的最大的并发连接数。 max_user_connections: 指定账号的最大并发连接数 max_connect_errors:客户端恶意连接MySQL错误数达到该值时,MySQL会拒绝来自此客户端host的连接。执行flush hosts后会清零。

参考