Mysql实例MySQL优化之连接优化
《Mysql实例MySQL优化之连接优化》要点: 上文MySQL优化之缓存优化 这篇文章中提到了一个很重要的概念,就是show variables是用来表示系统编译或者配置在my.cnf中的变量值.而show status则称之为状态值,显示的是当前服务实例运行所具有的状态信息,是一个动态改变的值.因此常用来观测当前MySQl的运行是否正常,如果不正常那么依靠调整静态参数来提高MySQL的性能.所以明白这两个概念的不同,是后面调优的基础.MYSQL教程 MySQL 连接优化MYSQL教程 记得有一次在公司内部连接MySQL的时候,总是连接不上.找到DBA后,经过排查原因,是当前MySQL连接数满了,经过调整后,解决了问题.引发连接数过多的错误原因一般有两个,第一的确是有很多人在连接MySQL,造成连接数用完.第二种是max_connections值过小.MYSQL教程 1、连接参数(show variables)MYSQL教程 mysql> show variables like '%connect%'; +-----------------------------------------------+-----------------+ | Variable_name | Value | +-----------------------------------------------+-----------------+ | character_set_connection | utf8 | | collation_connection | utf8_general_ci | | connect_timeout | 10 | | disconnect_on_expired_password | ON | | init_connect | | | max_connect_errors | 100 | | max_connections | 151 | | max_user_connections | 0 | | performance_schema_session_connect_attrs_size | 512 | +-----------------------------------------------+-----------------+
2、连接状态(show status)MYSQL教程 有一点需要注意的,变量值(show variables)是以小写字母开头的,而状态值(show status)是以大写字母开头.这样区分有助于记忆和分类MYSQL教程 mysql> show status like '%connections%'; +-----------------------------------+-------+ | Variable_name | Value | +-----------------------------------+-------+ | Connection_errors_max_connections | 0 | | Connections | 197 | | Max_used_connections | 2 | +-----------------------------------+-------+
Max_used_connections表示MySQL从启动至今,同一时刻并发的连接数,取得是最大值.如果这个值大于 max_connections则表明系统经常处于高并发的状态,应该考虑调大最大并发连接数.MYSQL教程 3、连接线程参数(thread variabls and status)MYSQL教程 mysql> show variables like 'thread%'; +--------------------+---------------------------+ | Variable_name | Value | +--------------------+---------------------------+ | thread_cache_size | 9 | | thread_concurrency | 10 | | thread_handling | one-thread-per-connection | | thread_stack | 262144 | +--------------------+---------------------------+
查看线程状态信息MYSQL教程 mysql> show status like 'Thread%'; +-------------------+-------+ | Variable_name | Value | +-------------------+-------+ | Threads_cached | 1 | | Threads_connected | 1 | | Threads_created | 2 | | Threads_running | 1 | +-------------------+-------+
连接请求堆栈MYSQL教程 MySQL在很短的时间内,突然收到很多的连接请求时,MySQL会将不能来得及处理的连接请求保存在堆栈中,以便MySQL后续处理.back_log参数设置了堆栈的大小,可以通过如下命令查看:MYSQL教程 mysql> show variables like 'back_log'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | back_log | 80 | +---------------+-------+ 连接异常MYSQL教程 mysql> show status like 'Aborted%'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | Aborted_clients | 0 | | Aborted_connects | 219 | +------------------+-------+
otherMYSQL教程 mysql> show status like 'Slow%'; +---------------------+-------+ | Variable_name | Value | +---------------------+-------+ | Slow_launch_threads | 0 | | Slow_queries | 0 | +---------------------+-------+ mysql> show variables like 'slow_launch_time'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | slow_launch_time | 2 | +------------------+-------+ Slow_lunch_threads 创建线程的时间过长,超过slow_launch_time的设定值,则会记录.MYSQL教程 可以通过使用 Connection_error%来查看连接的错误状态信息:MYSQL教程 mysql> show status like 'Connection_error%'; +-----------------------------------+-------+ | Variable_name | Value | +-----------------------------------+-------+ | 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 | +-----------------------------------+-------+ Connection_errors_peer_address 查找MySQL客户机IP地址是发生的错误数.MYSQL教程 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |