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

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

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

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的系统,那么会平白无故多出四五个小时的耗时,离离原上普了可以说。

相关推荐
sinat_3834373610 分钟前
Laravel 8 中实现错误日志与调试日志分离的完整配置指南
jvm·数据库·python
sunshine8859 小时前
财务RPA的深水区应用:超越自动化,迈向智能决策支持
数据库
efir OONA9 小时前
MySQL数据库误删恢复_mysql 数据 误删
数据库·mysql·adb
zhangchaoxies9 小时前
如何在 Go 中安全复制接口指针所指向的值
jvm·数据库·python
陈陈CHENCHEN10 小时前
【数据库】MySQL 8.0.40 至 8.0.44 RPM 方式升级指南
数据库·mysql
m0_7349497911 小时前
怎么利用Navicat进行调整备份文件压缩等级_详细配置与操作步骤
jvm·数据库·python
T.i.s11 小时前
番外续2-MIT-BIH Arrhythmia Database
数据库
有味道的男人11 小时前
AI 效率翻倍:对接 1688 拍立淘接口,商品全量信息一键抓取
数据库
m0_7411733311 小时前
如何处理SQL中的NULL值_使用ISNULL或COALESCE函数
jvm·数据库·python
志栋智能11 小时前
超自动化巡检:解锁运维数据的深层价值
运维·服务器·数据库·自动化