mysql优化(连接数、最大并发数)

目录

1、max_connections最大连接数

1.1、查询数据库当前设置的最大连接数

1.2、调整max_connections参数的值

1.2.1、方式一:实时(临时)修改此参数的值

1.2.2、方式二:在配置文件my.ini中设置max_connections的值

2、max_used_connections 查看最大连接数

3、max_user_connections 每个MySQL用户的最大连接数

3.1、查看全局每个用户最大连接数max_user_connections

 3.2、设置全局每个用户最大连接数max_user_connections

3.3、 针对某个用户进行最大连接数限制

4、mysql服务器的线程数 

4.1、查看mysql的线程情况

4.2、thread_cache_size缓存线程 优化

4,2.1、查询thread_cache_size

4.2.2、设置线程缓存数量 thread_cache_size


 

-- 查看最大连接数
show variables like '%max_connection%'; 

-- 重新设置最大连接数
set global max_connections=700;   

-- 查看数据库状态
-- threads_created:表示创建过的线程数,threads_created过大,
-- 表明mysql服务器一直在创建线程,这也是比较耗资源,说明服务器不健康。
show status like  'Threads%';

-- 查询服务器 thread_cache_size 配置
show variables like 'thread_cache_size';
-- 设置 线程缓存数量
set global thread_cache_size=100;

1、max_connections最大连接数

1.1、查询数据库当前设置的最大连接数

show variables like '%max_connections%';

MySQL无论如何都会保留一个用于管理员(SUPER)登陆的连接,用于管理员连接数据库进行维护操作,即使当前连接数已经达到了max_connections。因此MySQL的实际最大可连接数为max_connections+1;
 这个参数实际起作用的最大值(实际最大可连接数)为16384,即该参数最大值不能超过16384,即使超过也以16384为准;

增加max_connections参数的值,不会占用太多系统资源。系统资源(CPU、内存)的占用主要取决于查询的密度、效率等

该参数设置过小的最明显特征是出现”Too many connections”错误;

MySQL比较理想的最大连接数计算方式为max_used_connections / max_connections*100% ≈ 85%

最大连接数占上限连接数的85%左右,如果发现比例在10%以下,MySQL服务器连接数上限设置的过高了。

1.2、调整max_connections参数的值

1.2.1、方式一:实时(临时)修改此参数的值

使用root用户登录。

set global max_connections=1000;   

修改完成后实时生效,无需重启MySQL。

总体来说,该参数在服务器资源够用的情况下应该尽量设置大,以满足多个客户端同时连接的需求。否则将会出现类似”Too many connections”的错误。

1.2.2、方式二:在配置文件my.ini中设置max_connections的值

找到max_connections一行,修改为(如果没有,则自己添加)1000.

2、max_used_connections 查看最大连接数

show global status like 'Max_used_connections';


这两个状态说的是MYSQL SERVER自上次启动起来 最大连接数量发生的时间

Max_used_connections  服务器启动后已经同时使用的连接的最大数量

3、max_user_connections 每个MySQL用户的最大连接数

3.1、查看全局每个用户最大连接数max_user_connections

-- 查看max_user_connections 默认值(每个用户最大连接数)
show variables like 'max_user_connections';
-- 或者
select @@max_user_connections;

默认情况值为 0。代表:不限制用户资源的。

 3.2、设置全局每个用户最大连接数max_user_connections

-- 设置max_user_connections
set global max_user_connections=1; 
-- 或
set  @@global.max_user_connections=1;

该设置为 实时(临时)修改,在服务器重启后失效,想一直保存的话就放在配置文件里面。

 设置后,用该用户重新开一个连接。会出现以下错误提示:意思是这个用户已经达到最大的连接数,不能再连接拥有资源!

3.3、 针对某个用户进行最大连接数限制

max_user_connections 该参数只能对整体限制资源,不能对某个用户进行限制,如果需要对某个用户限制的话,你可以在权限表里面看到

max_questions: 0
max_updates: 0
max_connections: 0
max_user_connections
: 0
这几个参数可以对某个用户进行限制。

4、mysql服务器的线程数 

4.1、查看mysql的线程情况

show global status like 'Thread%';

参数说明:

treads_cached :表示是缓冲池中的线程个数。

Threads_connected :表示当前连接的线程数。跟show processlist结果相同。

Threads_created :表示创建过的线程数,如果发现Threads_created值过大的话,表明MySQL服务器一直在创建线程,这是比较耗资源,可以适当增加配置文件中thread_cache_size值。

Threads_running :这个数值指的是激活的连接数,这个数值一般远低于connected数值。准确的来说Threads_running当前并发数。

4.2、thread_cache_size缓存线程 优化

thread_cache_size:当客户端断开之后,服务器处理此客户的线程将会缓存起来以响应下一个客户,而不是销毁(前提是缓存数未达上限)。

即可以重新利用保存在缓存中线程的数量,当断开连接时如果缓存中还有空间,那么客户端的线程将被放到缓存中,如果线程重新被请求,那么请求将从缓存中读取,如果缓存中是空的或者是新的请求,那么这个线程将被重新创建,如果有很多新的线程,增加这个值可以改善系统性能。

4,2.1、查询thread_cache_size

-- 查询服务器 thread_cache_size 配置
show variables like 'thread_cache_size';

4.2.2、设置线程缓存数量 thread_cache_size

如果是短连接,适当设置大一点,因为短连接往往需要不停创建,不停销毁,如果大一点,连接线程都处于取用状态,不需要重新创建和销毁,所以对性能肯定是比较大的提升。

对于长连接,不能保证连接的稳定性,所以设置这参数还是有一定必要,可能连接池的问题,会导致连接数据库的不稳定性,也会出现频繁的创建和销毁,但这个情况比较少,如果是长连接,可以设置成小一点,一般在50-100左右。

物理内存设置规则:通过比较Connections 和 Threads_created 状态的变量,可以看到这个变量的作用。

方式1:实时(临时)设置,重启后失效。

-- 设置 线程缓存数量
set global thread_cache_size=100;

方式2:配置文件修改。

thread_concurrency = 100

  • 9
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
适当的最大连接数取决于多个因素,包括你的硬件资源、据库负载以及预期的并发连接数。 一般来说,可以使用以下公式来估计最大连接数最大连接数 = (可用内存 - 其他进程使用的内存) / 单个连接所需的内存。 在 macOS 上,你可以通过以下步骤来估算单个连接所需的内存: 1. 打开终端,使用管理员权限登录到 MySQL 服务器。 2. 运行以下命令来查看当前 MySQL 的配置信息: ``` mysql> SHOW VARIABLES LIKE 'max_connections'; mysql> SHOW VARIABLES LIKE 'thread_stack'; mysql> SHOW VARIABLES LIKE 'thread_cache_size'; ``` 这些变量将告诉你当前的最大连接数、线程栈大小以及线程缓存大小。 3. 根据线程栈大小和其他相关因素,估算出单个连接所需的内存。 通常情况下,线程栈大小为 256KB,但也可以通过修改 `thread_stack` 变量来进行调整。如果你的应用程序需要较大的线程栈,那么单个连接所需的内存也会相应增加。 4. 根据硬件资源和负载情况,确定一个合适的最大连接数。你可以参考以下几点: - 确保你的服务器有足够的内存来支持所需的最大连接数。 - 考虑据库负载的性质和预期的并发连接数。如果你的应用程序需要处理大量的并发连接,可能需要增加最大连接数。 - 监控系统资源使用情况,确保最大连接数不会导致服务器过载或性能下降。 总的来说,最大连接数需要根据具体情况进行调整和优化。建议在进行更改之前先备份配置文件,并进行适当的测试和监控,以确保服务器的稳定性和性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值