• 1553阅读
  • 0回复

MySQL性能优化之max_connections配置参数浅析

楼层直达
#y&3`Nz3  
这篇文章主要介绍了MySQL性能优化之max_connections配置参数浅析,本文着重讲解了3种配置max_connections参数的方法,需要的朋友可以参考下 rG:IS=  
0<>I\UN0b  
. J*-m!0 5  
. ^ W eE%"  
f+}? $'  
MySQL的max_connections参数用来设置最大连接(用户)数。每个连接MySQL的用户均算作一个连接,max_connections的默认值为100。本文将讲解此参数的详细作用与性能影响。 s_hf,QH  
kUUN2  
与max_connections有关的特性 ^+F@KXn L  
X-|`|>3E  
MySQL无论如何都会保留一个用于管理员(SUPER)登陆的连接,用于管理员连接数据库进行维护操作,即使当前连接数已经达到了max_connections。因此MySQL的实际最大可连接数为max_connections+1; Ett%Y*D+J  
这个参数实际起作用的最大值(实际最大可连接数)为16384,即该参数最大值不能超过16384,即使超过也以16384为准; 94=Wy-  
增加max_connections参数的值,不会占用太多系统资源。系统资源(CPU、内存)的占用主要取决于查询的密度、效率等; *TfXMN ?w  
该参数设置过小的最明显特征是出现”Too many connections”错误; rZLTai}`>  
w,SOvbAxX2  
我们先来看下如何查看当前mysql的max_connections的值: btkD<1{g  
%{!*)V\  
如下sql dGt;t5An V  
Rb Jl;  
dZFf /BXU  
复制代码 代码如下: 2.{:PM4Z4  
QFY1@2EC  
$bIVD  
show variables like "max_connections"; Qh<_/X?  
~ OD}`  
}enm#0Ha  
)D\!#<#h  
显示的结果如下格式 8fRk8  
3B8\r}L  
+-----------------+-------+ piIj t  
| Variable_name   | Value | \CNv,HUm3  
+-----------------+-------+  G`8i{3:  
| max_connections | 100   | 8MqKS}\H  
+-----------------+-------+ )F*;7]f  
wXI6KN-  
可以通过下面的sql语句将max_connections的值设置为200,当然前提是当前登录的用户有足够的权限: z/Z 0cM#  
3pg_`  
set global max_connections = 200; "=8= G  
w6FtDl$  
这个设置会马上生效,但是当mysql重启时这个设置会失效,更好的办法是修改mysql的ini配置文件my.ini U?BuV  
21ng94mC  
找到mysqld块,修改或者添加下面的设置: 6WUP#c@{  
~Y;_vU  
max_connections=200 :+u K1N  
6[wAX  
这样修改之后,即便重启mysql也会默认载入这个配置了 $7\Al$W\  
O$SQzLZx&  
不过为了安全期间,建议大家直接到my.ini里修改,么有可以加上。 +2X q+P  
i_<Uk8  
调整max_connections参数的值 Vm6 0aXm_  
Km/#\$|}  
调整此参数的方法有几种,既可以在编译的时候设置,也可以在MySQL配置文件 my.cnf 中设置,也可以直接使用命令调整并立即生效。 R8"qDj  
~# ~XDcc  
1、在编译的时候设置默认最大连接数 { [S@+  
znVao %b  
打开MySQL的源码,进入sql目录,修改mysqld.cc文件: <Wz+f+HC  
w]-,X`  
;`CNe$y   
复制代码 代码如下: ;giW  
^TWMYF-  
7E 4Xvg+c  
{"max_connections", OPT_MAX_CONNECTIONS, o>G^)aRa  
"The number of simultaneous clients allowed.", (gptr*) &max_connections, !}[cY76_  
(gptr*) &max_connections, 0, GET_ULONG, REQUIRED_ARG, 100, 1, 16384, 0, 1, =5 zx]N1r  
0}, +[2X@J  
h~ F`[G/'  
红色的”100″即为该参数的默认值,修改为想要的数值,存盘退出。然后执行 kVG]zt2  
zSU06Y  
复制代码 代码如下: pN]$|#%q(  
q1d'L *   
qUW>qi,  
./configure;make;make install 6Eu&%`  
-_>g=a@&  
重新编译安装MySQL;注意,由于编译安装且修改了MySQL源码,此操作最好在安装MySQL之前进行; t G{?  
UdSu:V|  
2、在配置文件my.cnf中设置max_connections的值 e>oE{_e  
@3 UVl^T  
打开MySQL配置文件my.cnf N,><,7!q$,  
bhFAt1h  
}PR^Dj.  
复制代码 代码如下: fGv`.T_d  
9t$%Tc#Z  
>Kd(.r[Er  
[root@www ~]# vi /etc/my.cnf $j~oB:3n7  
l7]$Wc[  
找到max_connections一行,修改为(如果没有,则自己添加), biFN]D  
UeRx ^  
复制代码 代码如下: GQ-o wH]  
|\/0S  
ZOFBT(oV  
max_connections = 1000 nI4xK  
FjUp+5  
上面的1000即该参数的值。 Bc4{$sc"O  
6TE R Q  
3、实时(临时)修改此参数的值 .P=uR8  
b; SFnZa8  
首先登陆mysql,执行如下命令: SnbH`\U"  
%iI0JF*E z  
a9GOY+;bf  
复制代码 代码如下: oHmU|  
XN"V{;OP1  
nzDS  
[root@www ~]# mysql -uroot -p f8! PeQ?  
)_T[thf]  
然后输入MySQL Root的密码。 }H{{@RU  
gQ h0-Dnw  
查看当前的Max_connections参数值: $*%Ml+H-  
d@"eWvnlZ  
tGzYO/Zp  
复制代码 代码如下: +D4Nu+~BSN  
]t1)8v2w>  
y wk;  
mysql> SELECT @@MAX_CONNECTIONS AS 'Max Connections'; $X9Ban]  
v%&f00  
设置该参数的值: "JVz v U]  
)X\.Xr-6q  
复制代码 代码如下: #X"\:yN  
=Gd[Qn83.%  
p/lMv\`5  
mysql> set GLOBAL max_connections=1000; o^&; `XOd  
#jr;.;8sQ  
(注意上面命令的大小写) 9qXHdpb#g"  
yc]ni.Hz  
修改完成后实时生效,无需重启MySQL。 <mY`<(bc  
~8pf.^,fi  
总体来说,该参数在服务器资源够用的情况下应该尽量设置大,以满足多个客户端同时连接的需求。否则将会出现类似”Too many connections”的错误。 @dCu]0oNI  
一般情况下根据同时在线人数设置一个比较综合的数字,我们设置的是10000. $o]zNW;X  
快速回复

限100 字节
安逸网提示:如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
认证码:
上一个 下一个