目录
show status 与show variables 区别
1.1 show variables like 'max_connections';
1.2、 show global status like 'Max_used_connections';
mysqld服务器维护两种变量:
全局变量影响服务器的全局操作。
会话变量影响具体客户端连接相关操作。
服务器启动时,将所有全局变量初始化为默认值。可以在选项文件或命令行中指定的选项来更改这些默认值。服务器启动后,通过连接服务器并执行SET GLOBAL var_name语句可以更改动态全局变量。要想更改全局变量,必须具有SUPER权限。
服务器还为每个客户端连接维护会话变量。连接时使用相应全局变量的当前值对客户端会话变量进行初始化。客户可以通过SET SESSION var_name语句来更改动态会话变量。设置会话变量不需要特殊权限,但客户可以只更改自己的会话变量,而不更改其它客户的会话变量。
任何访问全局变量的客户端都可以看见对全局变量的更改。但是,它只影响在更改后连接的从该全局变量初始化相应会话变量的客户端。它不会影响已经连接上的客户端的会话变量(甚至是执行SET GLOBAL语句的客户端)。
MySQL配置文件my.ini或my.cnf的位置
1、Windows下MySQL的配置文件是my.ini,一般会在安装目录的根目录。
2、Linux下MySQL的配置文件是my.cnf,一般会放在/etc/my.cnf,/etc/mysql/my.cnf。
show status 与show variables 区别
1、show status
查看系统运行的实时状态,便于dba查看mysql当前运行的状态,做出相应优化,动态的,不可认为修改,只能系统自动update。
2、show variables
查看系统参数,系统默认设置或者dba调整优化后的参数,静态的。可以通过set或者修改my.cnf配置文件修改。
根据status状态对Mysql数据库进行优化:
1、连接数
项目中可能会遇到MySQL: ERROR 1040: Too many connections”的异常情况,造成这种情况的一种原因是:
① 访问量过高,MySQL服务器抗不住,这个时候就要考虑增加从服务器分散读压力;
② 另一种原因就是MySQL配置文件中max_connections值过小。
1.1 show variables like 'max_connections';
查询服务器的最大连接数。
MySQL无论如何都会保留一个用于管理员(SUPER)登录的连接,用于管理员连接数据库进行维护操作,即使当前连接数已经达到了max_connections。因此MySQL的实际最大可连接数为max_connections+1;
这个参数实际起作用的最大值(实际最大可连接数)为16384,即该参数最大值不能超过16384,即使超过也以16384为准;
增加max_connections参数的值,不会占用太多系统资源。当然这建立在机器能支撑的情况下,因为如果连接数越多,介于MySQL会为每个连接提供连接缓冲区,就会开销越多的内存,所以要适当调整该值,不能盲目提高设值。
该参数设置过小的最明显特征是出现”Too many connections”错误;
1.2、 show global status like 'Max_used_connections';
查询当前的连接数。
比较理想的设置是: Max_used_connections / max_connections * 100% ≈ 85%
如果发现比例在10%以下,MySQL服务器连接数上限设置的过高了。
1.3、设置最大连接数值方法:
方法1:
set GLOBAL max_connections=1024;
show variables like '%max_connections%';
这种 方式 设置后立即生效;但在Mysql重启后就失效。
方法2:
修改mysql配置文件my.ini,在[mysqld]段中添加或修改max_connections值:max_connections=512
重启mysql服务即可。