MySQL的状态变量和系统变量
📅 2015-12-01 | 🖱️
🔖 mysql
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
后会清零。