Mysql连接数、线程数、数据包

一、连接数

      1、查询允许的最大并发连接数。

      show variables like ‘max_connections';

      

       我们在用MySql客户端工具Navicat的时候,经常会遇到  ERROR  1040(08004):Too  many connections。导致这个问题的原因就是超过了最大连接数。

        2、修改最大连接数

        方法1:临时生效

        set global max_collections=300;

        方法2:永久生效

        查找my.ini或my.cnf文件,进行编辑设置。

        重启MySql服务。

         (查看mysql安装路径:show variables like '%char%';)

二、线程数

1、查看线程相关的状态变量

 

 输出说明:

  ①Threads_cached:缓存中的线程连接数。

  ②Threads_connected:当前打开的连接数,该值和show processlist;输出记录总数一样

 ③Threads_created:为处理连接而创建的线程数。如果该值很大,要增加thread_cache_size。缓存未命中率=Threads_created/Connections。

  ④thread_cache_size:当客户端断开时,如果缓存中的线程连接数即Threads_cached,比thread_cache_size小,那么这个客户端线程会被放入缓存,如果可能,重用缓冲中线程来满足线程请求。如果有许多新连接,可以增加该项值来提供性能。

  2、线程池调优

   thread_pool_size是控制线程池性能的最重要参数。仅在启动服务器时被设置。

   如果主引擎为InnoDB,thread_pool_size最佳设置可能在16到36之间,最常见的优化值为24到36.

   如果主引擎为MyISAM,thread_pool_size设置应该相当低。一般为4到8.

 3、查询正在执行的进程

  使用命令show processlist;


第一列id,一个标识,kill一条语句的时候有用。

第二列user列,显示当前用户,如果不是root,这个命令就只显示你权限范围内的sql语句。

第三列host列,显示这个语句是从哪个ip的哪个端口上发出的。用来追踪处问题语句的用户。

第四列db列,显示这个进程目前连接的是哪个数据库。

第五列command列,显示当前连接的执行的命令。一般就是休眠(sleep),查询(query),连接(connect)。

第六列time列,此状态持续的时间,单位是秒。

第七列state列,显示使用当前连接的sql语句的状态。

第八列info,显示sql语句,因为长度有限。所以长的sql语句显示不全。

4、查询正在执行的sql语句

select * from information_schema.`processlist` where info is not null;  是show processlist;的升级版,能够显示正在执行的sql语句。


三、数据包

       show variables like '%max_allowed_packet%'

        

猜你喜欢

转载自blog.csdn.net/qq_26545305/article/details/79675507
今日推荐