mysql更新数据库慢是为什么?如何解决?

KLQ 2020-05-14 15:17:10 java常见问答 8063

相信大家一定都有遇到过mysql更新数据库很慢的问题,那么这究竟是什么导致的呢?为什么会慢?又应该如何去解决呢?下面一起来了解一下吧!

一、使用不恰当的sql语句

具体的可以看看下面的例子:

mysql更新数据库慢

在第一条SQL语句当中,where查询语句当中,出现了null,那么这个时候数据库的引擎将不会使用索引,反而,是会对全表扫描一次,那么这样的结果就是慢。

如何解决?

这里,可以使用0来代替null,也就是第二条SQL语句。

注意:

1、在查询的数据表当中,假如,使用了update、delete、insert太过于频繁的话,那么可以去尝试使用optimize table来存放,索引,存储文件。

2、Select for update,假如,条件的字段没有使用索引的话,那么就会导致对全表进行查询,而不是对特定的行进行查询。

二、外部的硬件因素

mysql更新数据库慢

外部的硬件因素能够直接对MySQL服务器性能的系统指标(例CPU、内存、磁盘等)的使用情况造成影响。

使用vmstart查看服务器资源使用情况:

mysql更新数据库慢

依据上面的结果,能够看出,磁盘的数据写入比较的大、CPU负载比较的高,那么,这个时候,就要对正在运行的程序进行优化,减小资源负载。

三、MySQL参数设置存在问题

1、max_connect_errors

正常的情况下,「max_connect_errors 」的默认值是10。

是用来表示受信账号错误的连接次数的。

在这个次数达到了10以后,MySQL服务器就会被自动阻塞住了

例:

mysql更新数据库慢

如何解决?

在出现了这样的问题之后,要用flush hosts来解决。

注:max_connect_errors代表着连接中断重复请求连接的次数

对于内网来讲的话,建议把max_connect_errors的数量设置大于10000,这种设置可以不会轻易的就发生阻塞。

并且你还要定期进行 flush hosts

2、connect_timeout

connect_timeout代表MySQL等待应答连接报文的最大秒数,在超过了这个时间之后,则代表MySQL连接失败。

这个默认时间是5S,所以,在系统处在了高并发的状态之下,就非常容易会发生超时,所以,就建议将connect_timeout设置成10-15秒是最适合的。

3、master-connect-retry

master-connect-retry代表的是在重新建立主从连接的时候,在出现了连接失败之后,间隔多久能够重试上述过程。

建议把这个值设置的大一点。

以上就是关于mysql更新数据库慢出现的原因以及解决方法了,你都了解了吗?更多关于mysql的知识,欢迎多多关注奇Q工具网的java架构师栏目了解哦。

推荐阅读:

mysql更新数据库语句怎么写?mysql更新字段语句

mysql如何优化?mysql性能调优经验分享!

mysql性能优化配置,优化方案整理