MySQL 网络连接与连接线程

MySQL 网络连接与连接线程

MySQL 连接可通过网络连接、和命令管道连接,不论哪种方式,都是在MySQL中通过线程方式管理所有客户端请求。每个客户端都有一个对应的连接线程。

1. 网络连接的性能配置及对应性能影响。
  • max_connecctions:整个 MySQL 允许的最大连接数。

这个参数主要影响 mysql 应用的并发出来能力,当并发超过这个参数是,请求将会等待,从而限制了相应的并发量。一般主机性能允许,将该值尽可能设置大一点,一般500到800比较合适。

  • max_user_connections:每个用户允许的最大连接数。
  • net_buffer_length:网络包传输中,传输消息之前的 net buffer 初始化大小。

这个参数主要影响到网络传输效率,该参数设置的只是消息缓冲区的初始化大小,所以,造成影响主要是当每次的消息都很大时,MySQL 总是需要多次申请扩展该缓冲区的大小。系统默认大小为 16KB,一般来说可以满足大多数场景,当然如果查询返回数据非常小,每次网络传输量都小,可以降低到 8KB。

  • max_allowed_packet:在网络传输中,一次消息传输量的最大值。

这个参数与 net_buffer_length 相对应,是 net buffer 的最大值,当消息传输量大于 net_buffer_length 设置时, MySQL 会自动增大 net buffer 的大小,知道缓冲区大小达到 max_allowed_packet 所设置的值。系统默认值为 1MB,最大 1GB。

  • back_log:在 MySQL 的连接请求等待队列中允许存放的最大连接请求数。
2. 客户端对应的连接线程。
      在MySQL中,为了尽可能高的提高“客户端请求创建连接” 这个过程的性能, 实现了一个 Thread Cache 池,将空闲的连接线程存放其中,而不是完成请求后就销毁。这样,当有新的连接请求时, MySQL 首先检查 Thread Cache 池中是否存在空闲连接线程,如果有存在则取出来直接使用,如果没有空闲连接线程,才创建新的连接线程,在 MySQL 中与连接线程相关参数及状态变量如下:
  • thread_cache_size: Thread Cache 池中应该存放的连接诶线程数。

50 到 100 之间就可以

  • thread_stack:每个连接线程被创建时, MySQL 给它分配的存储大小。

系统默认值 192KB

     连接线程相关系统变量的设置值:
     
     系统被连接的次数及当前系统中连接诶线程的状态值:
    
    
     系统启动到现在工连接收到客户端的连接 2次, 创建 1 个连接线程, 当前 1个连接线程处于和客户端连接状态,0个在 Thread Cache 池中缓存。
     Thread Cache 命中率:
     Thread_Cache_Hit = (Connections – Thread_created ) / Connections * 100%;
     命中率保持在 90 % 左右甚至更高才算正常。

发表评论

电子邮件地址不会被公开。 必填项已用*标注