为什么建立数据库连接耗时?究竟耗时多久?

数据库连接从连接池中取这已经是大家的共识了,因为频繁的建立或者关闭连接代价太大,那么代价究竟有多大?

我们先准备一个简单的数据库连接代码段

java 复制代码
public static void main(String[] args) throws ClassNotFoundException, SQLException, InterruptedException {
        Class.forName("com.mysql.jdbc.Driver");
        String name = "m_test";
        String password = "m_test";
        String url = "jdbc:mysql://xxxxxx:1234/test"; //脱敏处理
        Connection conn = DriverManager.getConnection(url, name, password);
        conn.close();
    }

然后打开抓包过滤器,分别过滤src和dst是目标数据库地址的网络请求

前面是TCP的三次握手,后面是四次挥手(少了一次,因为服务器的套接字端口已经关了,不会给客户端发请求了,所以没截取到)

详见TCP三次握手、四次分手

我们再看耗时-0.190908s,也就是190ms

除了部分慢sql,一个普通的sql一般最多也就几十毫秒,不会高于100ms

这也就是说,如果不使用连接池,那么每个请求平均多200ms的耗时

一般用户对接口的容忍度也才200ms

如果一个日请求量为10w的系统,那么会平白无故多出四五个小时的耗时,离离原上普了可以说。

相关推荐
Traving Yu13 小时前
向量数据库Milvus
数据库·人工智能·milvus
2501_9010064713 小时前
golang如何使用DTM分布式事务框架_golang DTM分布式事务框架使用方法
jvm·数据库·python
2501_9012005313 小时前
Golang如何做Clean Architecture_Golang整洁架构教程【详解】
jvm·数据库·python
咖啡里的茶i13 小时前
实验三 数据完整性实验
数据库·oracle
韶博雅13 小时前
oracle + parfile(数据泵)
数据库·oracle
weixin_4597539413 小时前
Go 中嵌入类型字段在派生结构体字面量中的初始化规则详解
jvm·数据库·python
CLX050513 小时前
HTML5中Mediastream实现摄像头画面实时捕获
jvm·数据库·python
Hello.Reader14 小时前
算法基础(十三)——随机算法为什么有时主动引入随机性
java·数据库·算法
iAm_Ike14 小时前
PHP错误和异常如何处理_PHP错误与异常处理机制详解【详解】
jvm·数据库·python
m0_6315298214 小时前
宝塔面板安装后无法修改配置文件_处理chattr锁定属性
jvm·数据库·python