MySQL查询和修改连接数

MySQL中如果是root帐号,你能看到所有用户的当前连接;如果是其它普通帐号,只能看到自己占用的连接。

1.查看当前连接详情

show processlist;和show full processlist;
如果是root帐号,你能看到所有用户的当前连接。如果是其它普通帐号,只能看到自己占用的连接。
show processlist;只列出前100条
show full processlist;全列出

show processlist;命令结果解析:
Id:正在运行服务器线程id
User:用户名,连接中的用户名
Host:连接客户端外网id和端口
db:连接使用的数据库
Command:命令模式,一般为Sleep,DQL(Data Query Language)等则是Query,show也是Query。
Time:时间
State:状态
Info:正在使用的命令

2.最大连接数

MySQL默认最大连接数是100。
max_connections:全局的限制连接数(最大连接数)
max_user_connections:单用户的连接数(最大连接数)

注意:
MySQL的最大连接数是2000,比较理想的设置是max_user_connections/max_connections*100%≈85%
最大连接数占上限连接数的85%左右,如果发现比例在10%以下,MySQL服务器连接数上限设置的过高了。

区别总结
(1)结论1
  max_connections变量的意义是 限制当前mysql server中 允许同时连接的不同用户数,并不对相同用户的多次连接进行限制
(2)结论2
  max_user_connections变量的意义是 限制当前mysql server中 允许同时连接的相同用户的连接数,不对连接的不同用户数进行限制
(3)结论3
  对max_connections变量的设置,由于是设置的全局变量,因此均是对所有用户生效
(4)结论4
对max_user_connections的设置,分为以下两种情况:

  1. 针对所有用户有效
mysql> set @@global.max_user_connections=2;
  1. 针对单个用户有效
mysql> grant usage on *.* to keyman@127.0.0.1 with max_user_connections 2;#此时的设置将仅对keyman用户有效。

注:与max_user_connections参数类似的还有max_queries_per_hour,max_updates_per_hour及max_connections_per_hours,见名知意,用法同上。

如何修改:
(1)Windows中可在my.ini中(Linux中在my.cnf)添加或修改:max_connections=xxx;
然后重启MySQL服务就会生效。

(2)命令修改
max_connections是MySQL的系统变量。所以可以通过命令:

set [grobal|session|@@GLOBAL.|@@SESSION.] var_name = value;

注意:grobal和session的区别则是一个是全局,一个是当前会话,修改全局的系统变量后需要重启MySQL才能有效。

(3)通过命令生成杀进程脚本

select concat('KILL ',id,';') from information_schema.processlist where user=’sam' into outfile '/tmp/a.txt

执行上面生成的KILL脚本

source /tmp/a.txt

3.实时查看连接数

通过MySQL的状态变量Threads查看,状态变量则是通过show status like '%variables%';查看。

show status like '%Threads%';
	+-------------------+-------+  
    | Variable_name     | Value |  
    +-------------------+-------+  
    | Threads_cached    | 58    |  
    | Threads_connected | 57    |   ###这个数值指的是打开的连接数  
    | Threads_created   | 3676  |  
    | Threads_running   | 4     |   ###这个数值指的是激活的连接数,这个数值一般远低于connected数值  
    +-------------------+-------+

4.连接有关的状态变量

通过show status like ‘%vriables%’;查看。
Aborted_clients 由于客户没有正确关闭连接已经死掉,已经放弃的连接数量。
Aborted_connects 尝试已经失败的MySQL服务器的连接的次数。
Connections 试图连接MySQL服务器的次数。
Created_tmp_tables 当执行语句时,已经被创造了的隐含临时表的数量。
Delayed_insert_threads 正在使用的延迟插入处理器线程的数量。
Delayed_writes 用INSERT DELAYED写入的行数。
Delayed_errors 用INSERT DELAYED写入的发生某些错误(可能重复键值)的行数。
Flush_commands 执行FLUSH命令的次数。
Handler_delete 请求从一张表中删除行的次数。
Handler_read_first 请求读入表中第一行的次数。
Handler_read_key 请求数字基于键读行。
Handler_read_next 请求读入基于一个键的一行的次数。
Handler_read_rnd 请求读入基于一个固定位置的一行的次数。
Handler_update 请求更新表中一行的次数。
Handler_write 请求向表中插入一行的次数。
Key_blocks_used 用于关键字缓存的块的数量。
Key_read_requests 请求从缓存读入一个键值的次数。
Key_reads 从磁盘物理读入一个键值的次数。
Key_write_requests 请求将一个关键字块写入缓存次数。
Key_writes 将一个键值块物理写入磁盘的次数。
Max_used_connections 同时使用的连接的最大数目。
Not_flushed_key_blocks 在键缓存中已经改变但是还没被清空到磁盘上的键块。
Not_flushed_delayed_rows 在INSERT DELAY队列中等待写入的行的数量。
Open_tables 打开表的数量。
Open_files 打开文件的数量。
Open_streams 打开流的数量(主要用于日志记载)
Opened_tables 已经打开的表的数量。
Questions 发往服务器的查询的数量。
Slow_queries 要花超过long_query_time时间的查询数量。
Threads_connected 当前打开的连接的数量。
Threads_running 不在睡眠的线程数量。
Uptime 服务器工作了多少秒。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值