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,可以根据需要进行动态设置。对于需要快速反馈的业务系统来说,可以将行锁的等待时间调小,以避免事务长时间挂起;对于后台运行的批量处理程序来说,可以将行锁的等待时间调大,以避免发生大的回滚操作。