mysql并发参数调整
mysql是多线程的,控制并发连接的主要参数包括max_connections,back_log,thread_cache_size,table_open_cache.
- max_connections
- 控制允许连接mysql数据库的最大数量,默认值是151.如果状态变量connection_errors_max_connections不为零,并且一直增长,则说明不断有连接请求因数据库连接数已达到允许最大值而失败,这时可以考虑增大max_connections的值。
- back_log
- back_log参数控制mysql监听TCP端口时设置的积压请求栈大小。如果mysql的连接数达到max_connections时,新来的请求将会被存在堆栈中,以等待某一连接释放资源,该堆栈的数量即back_log,如果等待连接的数量超过back_log,将不被授予连接资源,将会报错。5.6.6版本之前默认值为50,之后的版本默认为50+(max_connections/5),但最大不超过900.
- 如果需要数据库在较短的时间内处理大量的连接请求,可以考虑适当增大back_log的值。
- table_open_cache
- 该参数用来控制所有SQL语句执行线程可以打开表缓存的数量,而在执行SQL语句时,每一个SQL执行线程至少要打开一个表缓存。该参数的值应该根据设置的最大链接数max_connections以及每个连接执行关联查询中涉及的表的最大数量来设定: 默认2000
- thread_cache_size
- 为了加快连接数据库的速度,mysql会缓存一定数量的客户服务线程以备重用,通过参数thread_cache_size可控制mysql缓存客户服务线程的数量。
- innodb_lock_wait_timeout
- 该参数时用来设置等待行锁的时间,默认时50ms,可以根据需要进行动态设置。对于需要快速反馈的业务系统来说,可以将行锁的等待时间调小,以避免事务长时间挂起;对于后台运行的批量处理程序来说,可以将行锁的等待时间调大,以避免发生大的回滚操作。