<返回更多

MySQL连接如何保活

2023-09-10    堆栈future
加入收藏

常见的生产应用中我们一般都是用数据库连接池来做MySQL连接管理,因为它非常方便,不需要我们手动处理连接,只需要在使用的时候取出一个连接,使用完成之后自动被连接池托管。那我们取出一个连接直接使用的时候,连接池如何做到连接保活的?

那为了解决这个问题,一般都是采用心跳的方式,常见的有以下两种:

1.ping模式

作为客户端,如果想保持自己的连接一直活着,那么就发送ping命令,这样MySQL服务端收到这个命令之后回复:mysqld is alive就代表MySQL服务端是存活的,同时对于MySQL来说它接收到了客户端的ping命令,那就代表客户端还活着,此时MySQL就不应该断开这个连接。

2.select模式

常见的有以下两种:

select 1;
select version();

这种方式的好处就是像执行SQL语句那样执行,非常方便。

3. 区别

ping模式select模式到底有什么区别呢?

  1. ping模式不会进行复杂的词法分析,语法分析等,直接快速进行命令响应处理。select模式会经过一系列mysql sql执行的步骤,最后还得执行慢查询,事务提交等,这个过程下来耗费的时间比较长。
  2. ping模式只能用MySQL提供的API或者mysqladmin工具才能发送ping命令到MySQL服务端。而select模式是可以通过MySQL API或者MySQL交互式终端都能执行select查询。

4. 推荐

因为ping模式执行速度快,对于追求性能的程序推荐使用这种模式。另外在使用select模式的时候,推荐优先使用select 1这种查询。

常见的生产项目,比如用druid来管理的数据源,一般都是用select version()来做心跳保活的。

5. 问题

select version()这种方式有一个缺点就是当连接因为配置不恰当导致被MySQL服务端中断,那么客户端在执行这条SQL语句的时候就会报错,这样会影响程序执行效率。因此保活的前提一定是配置正确的前提下,这个一定要在本地或者测试环境测试好。

关键词:MySQL      点击(7)
声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多MySQL相关>>>