status和variable
MySQL的状态变量显示MySQL服务实例的状态信息,这些状态信息是动态的,包括MySQL服务器连接的会话状态、变量信息等。默认情况下状态变量都是以大写字母开头。
查看MySQL的状态变量:
show status;
show session status;
show global status;MySQL系统变量是指MySQL服务实例的各种系统变量(包括全局系统变量、会话系统变量、静态变量),这些变量包含MySQL编译时的参数默认值,或者my.cnf配置文件里配置的参数值。系统变量是一个静态的参数,默认情况下系统变量都是小写字母。
查看MySQL的系统变量:
show variables;
show session variables;
show global variables;status常用来观测当前MySQL是否运行正常,如果不正常可尝试使用variable调整。
MySQL超时相关变量
show variables like '%timeout%';
+-------------------------------------------+----------+
| Variable_name | Value |
+-------------------------------------------+----------+
| connect_timeout | 10 |
| delayed_insert_timeout | 300 |
| group_replication_components_stop_timeout | 31536000 |
| have_statement_timeout | YES |
| innodb_flush_log_at_timeout | 1 |
| innodb_lock_wait_timeout | 50 |
| innodb_rollback_on_timeout | OFF |
| interactive_timeout | 28800 |
| lock_wait_timeout | 31536000 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| rpl_stop_slave_timeout | 31536000 |
| slave_net_timeout | 60 |
| wait_timeout | 28800 |
+-------------------------------------------+----------+
14 rows in set (0.00 sec)大多数变量都见名知义:
innodb_lock_wait_timeoutInnoDB的锁等待时间(秒),为行级锁锁等待的时间,出现锁等待时,等待时长超过改值会导致锁等待的SQL回滚(不是整个事务),如果希望整个事务回滚可以设置innodb_rollback_on_timeoutinnodb_rollback_on_timeout设置为true,当遇到事务超时,会回滚整个事务slave_net_timeout复制连接超时时间,主从复制时slave从master读取binlog失败后,slave等待slave_net_timeout时间后,重新从master读取binlog。
连接相关状态和变量
show status like '%connect%';
+-----------------------------------------------+---------------------+
| Variable_name | Value |
+-----------------------------------------------+---------------------+
| Aborted_connects | 0 |
| Connection_errors_accept | 0 |
| Connection_errors_internal | 0 |
| Connection_errors_max_connections | 0 |
| Connection_errors_peer_address | 0 |
| Connection_errors_select | 0 |
| Connection_errors_tcpwrap | 0 |
| Connections | 5 |
| Locked_connects | 0 |
| Max_used_connections | 1 |
| Max_used_connections_time | 2015-12-01 18:04:31 |
| Performance_schema_session_connect_attrs_lost | 0 |
| Ssl_client_connects | 0 |
| Ssl_connect_renegotiates | 0 |
| Ssl_finished_connects | 0 |
| Threads_connected | 1 |
+-----------------------------------------------+---------------------+
16 rows in set (0.00 sec)Connection_errors_max_connections:当MySQL的最大并发连接数超过设置的max_connections变量的值,被拒绝的次数会记录到这个状态值里。 这个状态值过高,有可能是系统并发较高,可以考虑调大max_connections。ConnectionsMySQL服务从初始化开始成功建立连接的数量,该值不断累加。Max_used_connectionsMySQL服务从启动开始,同一时刻并发连接的最大值,如果该值很大,则有可能系统并发较高,可以考虑调大max_connections。Threads_connected当前打开的连接数量。
show variables like '%connect%';
+-----------------------------------------------+-----------------+
| Variable_name | Value |
+-----------------------------------------------+-----------------+
| character_set_connection | utf8 |
| collation_connection | utf8_general_ci |
| connect_timeout | 10 |
| disconnect_on_expired_password | ON |
| group_replication_recovery_reconnect_interval | 60 |
| init_connect | |
| max_connect_errors | 100 |
| max_connections | 151 |
| max_user_connections | 0 |
| performance_schema_session_connect_attrs_size | 512 |
+-----------------------------------------------+-----------------+max_connections:MySQL实例同时接受的最大的并发连接数。
max_user_connections: 指定账号的最大并发连接数
max_connect_errors:客户端恶意连接MySQL错误数达到该值时,MySQL会拒绝来自此客户端host的连接。执行flush hosts后会清零。