mysql数据库为什么要使用连接池?

news2025/2/27 21:16:21

连接池是MySQL数据库访问的关键组件,它负责管理和维护一组数据库连接,允许应用程序高效地重用这些连接,从而降低了连接的建立和断开开销,提高了性能、资源利用率和可伸缩性。

(一)为什么要用连接池?

不用连接池连接池
建连接较耗时(两层握手)性能更佳
连接数有限连接数受控+健康探测
大量TIME_WAIT监控和管理灵活

不用连接池会存在以下问题:

1)如果不用连接池,每一次查询都需要建立连接,有两层握手。第一层是TCP层的握手,第二层是 MySQL协议握手。

两层协议大概需要有多个TCP数据包,这些都需要时间,在数据库内部还需要处理,建立连接是费时间的操作;

2)对于当代的应用来说,应用服务器一般有很多台,而数据库服务器相比之下可能少一些。大量应用服务器会存在一个

问题,在业务流量高峰期存在对DB的连接,而DB能够承载的连接数有限。所以说如果不用连接池,那么这个连接的数

量就不受控制,严重情况下可导致DB性能降低;

3)如果不用连接池,意味着每次执行SQL语句时,都需要创建TCL链接和关闭TCL链接,而关闭动作是在应用端完成,

导致应用服务器上存在较多TimeWait状态的TCP连接。TimeWait状态的连接数达到一定数量之后会引起应用问题,例

如端口不够用。

用连接池的优点:

1)不用每次都建立连接,而是直接从连接池里取连接,性能更佳;

2)连接池可以控制连接数量,以及当连接出现问题时,连接池能够去自动探测连接是否存活,如果连接中断,连接池会

自动重建;

比如应用使用RDS的MySQL,需要对MySQL的实例进行配置变更。如升规格,提高磁盘空间,遇到问题者压力大时,

希望能够重启MySQL,有了连接池就能够自动处理好这些问题。

3)连接池能够对连接进行灵活的管理,对连接池配置与连接池状态监控,看到连接池里面的各种连接数量和性能指标。

(二)连接池架构

在这里插入图片描述

连接池架构分为:接口层、核心层、基础层。

接口层:对于MyBatis是从连接池里获取连接,连接用完之后关闭,调用连接的Close,归还连接。

核心层:负责并发控制、连接控制、异常处理。

1)并发控制:连接池里的连接数量有限,应用里面的线程数量多于连接池的连接数量。

第一种情况,当连接池里的连接都处于活跃状态时,下一个请求,想要继续得到连接需要等待,因为数量有限,需要排队。

第二种情况,同一个链接,不能分配给多个线程,否则可能会事务混乱。

2)连接控制:需要能够动态调整连接池大小,同时连接池保证连接池里面的连接数量在期望范围内。

3)异常处理:出现异常时,比如底层数据库重启,网络中断,或者连接里面发生了协议层引擎层面错误,连接已经

不能再使用,这个时候连接池自动处理这些问题,将连接关闭并重新创建链接。

基础层:包括配置管理、监控、定时任务、日志、字节码操纵。

1)配置管理:连接池里面有很多的配置项,虽然常用的不多,但是可配置的点很多,需要进行解析管理。

2)监控:连接运行时需要统计和监控,最好能够提供查看的页面。

3)定时任务:连接池里空闲连接数量超过一定的程度,释放空闲连接,是通过定时任务完成。

4)字节码操纵:在Java框架里面会存在大量的字节码操纵,动态生成代理。

参考:https://developer.aliyun.com/ebook/450?spm=a2c6h.20345107.ebook-index.28.6eb21f54J7SUYc

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1087315.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pytorch学习第二篇:张量

tensor与numpy import torch import numpy as npnumpy数组 到 张量tensor n np.ones(5) t torch.from_numpy(n)NumPy 数组中的变化反映在张量中 np.add(n, 1, outn) print(f"t: {t}") print(f"n: {n}")张量到 NumPy 数 t torch.ones(5) print(f&quo…

[ spring boot入门 ] java: 错误: 无效的源发行版:17

因为我目前idea中使用的是jdK8,而在pom.xml文件里是17,所以我需要将所有地方修改为jdk8 pom.xml的jdk版本为8 maven的setting.xml文件 jdk为8 还有Java Compiler 还有Project Structure 里面的project 和 module

2023北京市人工智能大模型场景融合与产业发展专场活动盛大召开

2023年10月12日,“2023北京市人工智能大模型场景融合与产业发展专场”活动在中关村软件园国际会议中心盛大召开,本次活动作为助力北京民营企业创新领跑行动计划的专场活动,由北京市委网信办、北京市科委、中关村管委会、北京市经信局、北京市…

2023年中国水生植物产业链、产值及市场规模分析[图]

水生植物是生态学范畴上的类群,是不同分类群植物通过长期适应水环境而形成的趋同性生态适应类型。水生植物应用范围广,既可以作为蔬菜食用,又可以作为园林观赏植物以及饲料作物等。水生蔬菜是中国蔬菜生产中的一大特色,其品种之多&#xff0c…

Unity微信小游戏登录授权获取用户信息

文章目录 前言:一、登录二、查看授权三、调起授权(特详细)微信公众平台的设置 四、获取用户信息结语: 前言: 最近需要在接微信获取用户信息的功能,在小游戏官方API中翻找资料。不得不说官方接口很多、很全&…

高德地图驾车导航避让点位

封路图标的位置就是避让路段 首先我们在 data 里声明一个 driving 为 null 用 this.driving 去接收轨迹 便于下次渲染轨迹时将其清除 避让的话我调用的是 setAvoidPolygons() 这个方法 他的参数是个二维数组 长这样 // [避让区域, 避让区域, ...] // 每个避让区域 [[lng,…

全网最细-深度解析 Istio Ambient Mesh 流量路径

作者:史泽寰 前言 Istio Ambient Mesh 是 Istio 社区的推出的将 Sidecar 的能力抽离至 ztunnel 和 waypoint 的全新架构,同时基于 iptables 和策略路由实现了该架构下的流量规则,目前网络上已经有些资料对这部分的实现进行了一定程度的剖析…

2023最新聚支付系统源码/去授权+支持易支付和码支付/能正常运营/全开源亲测可用

源码介绍: 聚支付去授权系统源码,它是一款支持易支付、码支付等功能,能正常运营的开源聚合支付系统源代码。采用 PHPMySQL技术栈,可完全自由定制。 2023最新聚支付系统源码/去授权支持易支付和码支付,能正常运营&…

物联网市场规模迅速增加,在交通、医疗、农业等方面发展势头迅猛

物联网(Internet of things)是一系列用于解决物的信息识别、交换、控制等技术的集合应用形成的网络。当连接从互联网时代的人与人走向万物互联,万物的数字化、智能化依赖物联网技术。因此,物联网是指利用各类信息识别设备&#xf…

电脑硬盘分区该怎么进行?这几种方法简单有效!

电脑硬盘分区该怎么进行?这几种方法简单有效! “我购买的电脑硬盘初次分区分为了四个区,分别是C盘、D盘、E盘、F盘,其中C盘有80G,其余各盘则拥有几百G的空间。初期使用时并未觉得有何问题,但随着文件的堆积…

增速波动!W「下」AR「上」!HUD前装供应商比拼硬核能力

作为汽车智能座舱人机交互的新配置之一,HUD(抬头显示)市场在经历一波快速增长周期后,进入调整阶段。 本周,高工智能汽车研究院发布数据显示,2023年8月,中国市场(不含进出口&#xff…

geecg-uniapp 同源策略 数据请求 获取后台数据 进行页面渲染 ui库安装 冲突解决(3)

一,同源策略 (1)首先找到env 要是没有env 需要创建一个替换成后端接口 (2)因为他封装了 先找到 http 请求位置一级一级找 然后进行接口修改 (3)appUpdata 修改接口 运行即可 &#x…

1.MySQL库的操作

个人主页:Lei宝啊 愿所有美好如期而遇 1.创建数据库: 语法:create database if not exists db_name charset字符集 collate校验规则 ; if not exists ,charset ,collate可以不加,直接create database 数…

mongodb简介、安装、搭建复制集以及切片

一、 简介 NoSQL数据库四大家族:列存储 Hbase,键值(Key-Value)存储 Redis,图像存储 Neo4j,基于分布式文档存储的数据库MongoDb。 MongoDB 和关系型数据库对比 关系型数据库MongoDBdatabase(库)database&…

uniapp小程序中给web-view页面添加授权弹窗(使用cover-view组件覆盖实现该功能)

效果图: web-view是承载网页的容器。会自动铺满整个小程序页面,个人类型的小程序暂不支持使用。 再看下面一个提示: 每个页面只能有一个 web-view,web-view 会自动铺满整个页面,并覆盖其他组件。 也就是说,…

DB2 数据库监控用户赋权手册

DB2 数据库监控用户赋权手册 1、系统管理表查询权限2、系统管理表函数执行权限3、数据库 mon 监控数据访问权限 皮皮运维平台数据统一采集用户(DBAA)需要被监控数据库赋予对应下查询表、表函数以 及获取数据库监控数据的权限,具体授权操作有以…

day14I102.二叉树的层序遍历

1、102.二叉树的层序遍历 题目链接:https://leetcode.cn/problems/binary-tree-level-order-traversal/ 文章链接:https://programmercarl.com/0102.%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%B1%82%E5%BA%8F%E9%81%8D%E5%8E%86.html#%E7%AE%97%E6%B3%95…

记一次Redis Cluster Pipeline导致的死锁问题

作者:vivo 互联网服务器团队- Li Gang 本文介绍了一次排查Dubbo线程池耗尽问题的过程。通过查看Dubbo线程状态、分析Jedis连接池获取连接的源码、排查死锁条件等方面,最终确认是因为使用了cluster pipeline模式且没有设置超时时间导致死锁问题。 一、背…

【C++】:内存管理

朋友们、伙计们,我们又见面了,本期来给大家解读一下有关Linux的基础知识点,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言:从入门到精通 数…

Webmin远程命令执行漏洞复现

文章目录 Webmin_1.910_rce(CVE-2019-15107)漏洞编号漏洞描述影响版本漏洞评级利用方法(利用案例)漏洞挖掘加固建议参考信息漏洞分类 Webmin_1.910_rce(CVE-2019-15107) 漏洞编号 CVE-2019-15107 漏洞描述 Webmin是一个用于管理类Unix系统的管理配置…