MySQL修改最大连接数的两个方式

解决方式一:通过命令
可以通过set GLOBAL max_connections=100; 命令将最大连接数设置为100,此方法是即时生效的,不需要重启mysql服务。
解决方式二:通过修改配置文件
windows下的文件名叫做my.ini,linux下文件名叫my.cnf(一般在/etc/my.cnf目录下)
配置:max_connections=100
这两种方式的区别
1.通过修改配置文件,需要重启服务;而用命令修改,即时生效。
2.采用修改配置文件的方式,更稳定可靠。因为如果配置文件中有max_connections=100,再去用命令修改的话,一旦重启mysql服务后,会重新以配置文件中指定的连接数为准。
3.通过命令修改,重启mysql服务后配置失效,需要重新配置;而配置文件的方式不存在这个问题。
使用场景:我们经常会遇见“MySQL: ERROR 1040: Too many connections”的情况,一种是访问量确实很高,MySQL服务器抗不住,这个时候就要考虑增加从服务器分散读写压力,另外一种情况是MySQL配置文件中max_connections值过小。
数据库连接池最小连接数和最大连接数:
最小连接数是连接池一直保持的数据连接。如果应用程序对数据库连接的使用量不大,将会有大量的数据库连接资源被浪费掉。
MySQL默认的最大连接数为100,MySQL服务器允许的最大连接数16384
最大连接数是连接池能申请的最大连接数。如果数据连接请求超过此数,后面的数据连接请求将被加入到等待队列中,这会影响之后的数据库操作。如果最小连接数与最大连接数相差太大,那么,最先的连接请求将会获利,之后超过最小连接数量的连接请求等价于建立一个新的数据库连接。不过,这些大于最小连接数的数据库连接在使用完不会马上被释放,它将被放到连接池中等待重复使用或是空闲超时后被释放。
MySQL服务器的连接数并不是要达到最大的100%为好,要具体问题具体分析
mysql> show variables like 'max_connections';  //查看配置的最大连接数是多少
mysql> show global status like 'Max_used_connections';  //查看历史最大连接数是多少
比较理想的设置是:Max_used_connections / max_connections * 100% ≈ 85%
对于并发较大的系统,建立一次连接然后缓存起来连续使用,直到程序结束等情况下再释放连接,就能够将系统资源集中在对数据库操作的处理上,从而大大提高性能。通常情况下将数据连接的建立和断开委托给一种能够数据库连接池的组件或服务进行管理。而DBCP, C3p0, Proxool等都是常用的开源的连接池组件。
在修改最大连接数的时候会有这样一个疑问—这个值是不是越大越好,或者设置为多大才合适?这个参数的大小要综合很多因素来考虑,比如使用的平台所支持的线程库数量、服务器的配置(特别是内存大小)、每个连接占用资源(内存和负载)的多少、系统需要的响应时间等。可以在global或session范围内修改这个参数。连接数的增加会带来很多连锁反应,需要在实际中避免由此引发的负面影响。
MySQL为每个连接分配线程来处理,可以通过threads_connected参数查看当前分配的线程数量:

mysql> show status like '%thread%';


比较threads_connected参数和前面提到的max_connections参数,也可以作为目前的系统负载的参照,决定是否需要修改连接数。

其它配置参数如下(my.ini):

1.default-character-set=utf8
2.character-set-server=utf8
3.default-storage-engine=INNODB
4.max_connections=100
5.query_cache_size=0
6.table_cache=256
7.tmp_table_size=18M
8.thread_cache_size=8
9.myisam_max_sort_file_size=100G
10.myisam_sort_buffer_size=35M
11.key_buffer_size=25M
12.read_buffer_size=64K
13.read_rnd_buffer_size=256K
14.sort_buffer_size=256K
15.innodb_additional_mem_pool_size=2M
16.innodb_flush_log_at_trx_commit=1
17.innodb_log_buffer_size=1M
18.innodb_buffer_pool_size=47M
19.innodb_log_file_size=24M
20.innodb_thread_concurrency=10

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值