MySQL连接资源占用与状态分析(v1)

本文介绍了如何查看MySQL的连接状态,包括正在连接、已创建和正在运行的连接数,以及最大连接数。同时,详细分析了连接资源的分配,如索引缓冲区、读取缓冲区和排序缓冲区的大小,并强调了每个连接独立占用的内存空间。还提到了Max_allowed_packet参数和内存使用限制,以及如何通过FLUSH TABLE命令优化内存管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
1 怎么查看连接信息
MySQL一个连接就是线程。
查看连接状态:
mysql> show status;
Threads_cached            | 0     |
| Threads_connected         | 1     |              //正在连接的连接数
| Threads_created           | 3     |              //已经创建过的连接数
| Threads_running           | 1     |              //正在运行的连接数
| Uptime                    | 22947 |
 
查看连接参数:
mysql> show variables;
| max_connections                  | 16384       //允许的最大连接数
 
查看连接线程状态:
mysql> show processlist;
+----+-----------+-----------+------+---------+------+-------+------------------+
| Id | User       | Host      | db   | Command | Time | State | Info             |
+----+-----------+-----------+------+---------+------+-------+------------------+
| 3 | denny | localhost | NULL | Query    |    0 | NULL | show processlist |
+----+-----------+-----------+------+---------+------+-------+------------------+
1 row in set (0.00 sec)
 
2 连接资源的分配
key_buffer_size       指定用于索引的缓冲区大小,增加它可得到更好的索引处理性能。read_buffer_size = 4M 读查询操作所能使用的缓冲区大小。
join_buffer_size = 8M 联合查询操作所能使用的缓冲区大小.
sort_buffer_size 
  
注意:每个连接使用具体线程的空间, 下面参数每个连接独占:
*         堆栈(默认64KB,变量thread_stack)
*         连接缓存区(变量net_buffer_length)
*         结果缓存区(变量net_buffer_length)
接缓存区和结果缓存区可以根据需要动态扩充到max_allowed_packet。
max_allowed_packet = 4M
如果有100个连接,那么实际分配的总共排序缓冲区大小为100 × 6 = 600MB。
 
对于每个打开的MyISAM表,索引文件打开一次;数据文件为每个并行运行的线程打开一次。对于每个并行线程,将分配一个表结构、一个每个列的列结构和大小为3 * N的缓存区(其中 N是最大行的长度,而不是计算BLOB列)。一个BLOB列需要5至8个字节加上BLOB数据的长度。MyISAM 存储引擎维护一个额外的行缓存区供内部应用。
当并行执行的线程结束时,FLUSH TABLE语句或 mysqladmin flush-table命令可以立即关闭所有不使用的表并将所有使用中的表标记为已经关闭。这样可以有效释放大多数使用中的内存。FLUSH TABLE在关闭所有表之前不返回结果。
 
内存使用下面的加起来不要超过2G:(一些系统对文件大小的限制,一个表就是一个文件)
innodb_buffer_pool_size
+ key_buffer_size
+ max_connections * (sort_buffer_size + read_buffer_size + binlog_cache_size)
+ max_connections * 2MB     //thread stack
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值