MySQL调优

show status 可以查看所有mysql的状态值,但是过多不好观察,又或者监控需要指定的特定值就需要单独指定了 

1
尝试已经失败的MySQL服务器的连接的次数。 其中包括了已经失败的链接<br>show status like 'connections'

  

1
查看已经失败的链接<br>show status like 'Aborted_connects';

 

1
查看当前系统的等待时间,这个数值会影响到show processlist中的sheep状态<br>show global variables like 'wait_timeout';

改变此数值

复制代码
# vi /etc/my.cnf

[mysqld]
wait_timeout=10

# /etc/init.d/mysql restart

不过这个方法太生硬了,线上服务重启无论如何都应该尽可能避免,看看如何在MySQL命令行里通过SET来设置:


mysql> set global wait_timeout=10;

查看
 show global variables like 'wait_timeout';

【查询注意】:
  这里一个容易把人搞蒙的地方是如果查询时使用的是show variables的话,会发现设置好像并没有生效,这是因为单纯使用show variables的话就等同于使用的是show session variables,查询的是会话变量,只有使用show global variables,查询的才是全局变量。

【设置注意】:
  网络上很多人都抱怨说他们set global之后使用show variables查询没有发现改变,原因就在于混淆了会话变量和全局变量,如果仅仅想修改会话变量的话,可以使用类似set wait_timeout=10;或者set session wait_timeout=10;这样的语法。
修改wait_timeout
复制代码

wait_timeout 和 interactive_timeout 的区别:

wait_timeout是非交互链接,interactive_timeout是交互链接,

官方说明:wait-timeout 服务器在关闭非交互连接之前等待活动的秒数。

     interactive-timeout 服务器在关闭交互式连接之前等待活动的秒数。交互式客户端被定义为使用的客户机。

 

那什么是交互和非交互呢?
交互式操作:通俗的说,就是你在你的本机上打开mysql的客户端,就是那个黑窗口,在黑窗口下进行各种sql操作,当然走的肯定是tcp协议。
非交互式操作:就是你在你的项目中进行程序调用。比如一边是tomcat web服务器,一边是数据库服务器,两者怎么通信?在java web里,我们通常会选择hibernate或者是jdbc来连接。那么这时候就是非交互式操作。

 

1
由于客户没有正确关闭连接已经死掉,已经放弃的连接数量, 应该就是上面的参数到时以后放弃的链接<br>show status like 'Aborted_clients';

  

1
当执行语句时,已经被创造了的隐含临时表的数量<br>show status like 'Created_tmp_tables';

 

 

 

最大连接数:

查看:

1
show variables like 'max_connections';

修改:

1
set global max_connections=1000;

  

 

posted @   wawahan  阅读(122)  评论(0)    收藏  举报
编辑推荐:
· MySQL索引完全指南:让你的查询速度飞起来
· 一个字符串替换引发的性能血案:正则回溯与救赎之路
· 为什么说方法的参数最好不要超过4个?
· C#.Net 筑基-优雅 LINQ 的查询艺术
· 一个自认为理想主义者的程序员,写了5年公众号、博客的初衷
阅读排行:
· MySQL索引完全指南:让你的查询速度飞起来
· 我用这13个工具,让开发效率提升了5倍!
· 本地搭建一个对嘴AI工具
· 总结下参与以及看到的一些好的业务设计的 pattern
· Coze工作流实战:一键生成鸡汤视频——厉害的人,早已戒掉情绪
点击右上角即可分享
微信分享提示