当前位置: 首页 > news >正文

mysql连接池简单原理介绍+高并发场景下的设计

目录

mysql连接池

引入

介绍

池化技术

基本概念

高并发场景下 

执行sql失败


mysql连接池

引入

当我们在网站中使用数据库时,设计好表结构后,大部分都是在写上层代码

  • mysql的主要工作就是在需要时连接数据库,连上之后做一些事务,就被释放掉了 -- 短连接
  • 短连接是为了提高整体效率,不然有些线程一直不使用,却一直保持连接状态 ; 且避免了长期占用数据库连接的情况,这样可以让更多的线程或请求获取连接,提高资源利用率
  • 但频繁的连接和断开会增加开销

通过引入池化技术可以减少连接建立和关闭的频率,并且提供了快速获取连接的能力

 

介绍

MySQL连接池是一个用于管理和复用数据库连接的机制,主要目的是提高应用程序的性能和资源利用率

  • 是一种编码层面上的技术

池化技术

一种用于高效管理和复用资源的设计模式,广泛应用于数据库连接、线程、对象等领域

  • 通过维护一组预先创建的资源(如数据库连接、线程或对象),在需要时从池中获取并使用,使用完后再归还
  • 避免了频繁创建和销毁资源带来的性能开销

基本概念

连接池维护一组预先创建的数据库连接,应用程序在需要时可以从池中获取连接,使用完后再归还

  • 也就是不再直接与mysql建立连接,而是去连接池里获取已有连接,来执行数据库操作

高并发场景下 

也可以结合多线程,让请求可以被异步处理

  • 创建多个线程与数据库保持连接状态
  • 当有需要执行的sql语句到来时,push进任务队列中,然后分配线程去处理,每个线程内部都有一个对象,提供mysql连接/执行等方法

说具体一点就是:

  • 作为请求方,可以定义一个task类,里面包含要执行的sql语句和回调方法
  • 然后将类对象push进任务队列中,线程拿着里面的sql语句去执行

回调方法是干嘛的呢?

  • 因为我们的查询操作是需要拿到结果的
  • 所以只要这个回调方法被设置,线程就执行它,并将查询结果通过函数的参数/返回值返回给上层,这样请求方就可以拿到结果了

执行sql失败

如果sql失败,就reset连接

  • 是为了确保后续操作的可靠性

原因:

  • 在高并发环境下,数据库可能因为各种原因(如负载过重、网络问题等)导致连接出现问题 -- 重置连接可以重新初始化连接的状态,继续正常工作
  • 也可能连接在执行过程中进入不一致或错误的状态 -- 重置连接可以清除这些状态,确保连接干净可用


http://www.mrgr.cn/news/54461.html

相关文章:

  • 【Eclipse系列】The word is not correctly spelled问题解决
  • uniapp,获取头部高度
  • 鸿蒙开发 四十五 鸿蒙状态管理(嵌套对象界面更新)
  • 软件设计模式------概述
  • 【CS常见问题】你用的是VS2019,最高支持.NET5.0,但是项目将.NET6.0设为目标无法运行,怎么办?
  • 前端开发学习(一)VUE框架概述
  • 发动机拆解可视化:精细化呈现机械内部结构
  • 安装 Git
  • 二层交换机的工作原理与局域网设备通信详解
  • 瑞云快图云渲染怎么样?渲染一张图贵吗?
  • 图的最小生成树算法--普里姆(Prim)算法和克鲁斯克尔(Kruskal)算法
  • 软考(网工)——局域网和城域网
  • 软件分享 丨eSearch 截图软件
  • AndroidStudio实验报告——实验一、二
  • 【Java】泛型
  • Linux 累加计算递归算法汇编实现
  • 【Linux】Linux进程地址空间
  • java集合进阶篇-《泛型》
  • Spring aop讲解+动态代理思想+事务注解原理
  • Unity3D VisionPro 环境扫描 空间理解 网格扫描 AR Mesh
  • YOLOv11改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 StarNet,超级精简高效的轻量化模块
  • VASCO:增减材混合制造的体积和表面共分解
  • String类的基本用法
  • Vue学习
  • MongoDB安装配置及配置和启动服务
  • <Project-11 Calculator> 计算器 0.2 工时计算器 WorkHours Calculator HTTP + JS