mysql和redis连接池

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDSClaw,2核4GB
简介: mysql和redis连接池

1、为什么要使用连接池

       池化技术可以减少资源的创建次数,提高程序的响应性能,特别是在高并发下特别明显,常见的有线程池、内存池、连接池、对象池;使用池式缓存的资源对象有如下特点:

       1)对象创建时间长;

       2)对象创建需要大量资源;

       3)对象创建后可被重复使用;

2、连接池的设计原理

   

       比如登陆,发消息等被封装成任务,每个任务放到线程池的队列中,比如每个发消息任务都要和数据库创建创建连接是没有必要的;没创建一个连接都要进行三次握手,验证,用户退出,四次挥手是无效的措施; 只有执行sql是有效的;

       比如,连接池创建了4个连接,保持线程池模块连接到数据库中,如果线程池需要操作数据库做任务,那么只需要从连接池获取连接,每个连接只能同时给一个任务用。比如线程1从连接池获取一个连接操作数据库,用完以后归还连接到线程池;

       线程池:主动操作,获取并执行任务;

       连接池:被动操作,类似线程池,池对象被任务获取,执行完任务后归还;

3、mysql不使用连接池的情况下,实现简单,但是每次发起sql操作都要经历tcp建立连接,数据库验证,数据库用户退出,tcp断开连接;网络io较多,带宽利用率低,qps较低;频繁创建连接和关闭连接,导致临时对象较多·,带来更多的内存碎片,在关闭连接后会出现大量TIME_WAIT的TCP状态;

 

4、使用连接池时,第一次访问需要建立连接,但之后的访问,均会复用之前创建的连接,直接执行sql语句;缺点是设计复杂,优点是降低了网络开销,连接复用有限的减少了连接数,提高性能避免频繁创建连接,没有TIME_WAIT状态问题;

5、长连接和连接池

       长连接是一些驱动,驱动框架、ORM工具的特性,由驱动来保持连接句柄的打开,以便后续数据库操作可以重用连接,从而减少数据库连接的开销;

       连接池,是应用服务器的组件,它可以通过参数配置连接数,连接检测,连接的生命周期等;连接池内的连接就是长连接;

6、数据库连接池运行机制

       1)连接池获取或创建可用连接;

       2)使用完毕后,把连接返回给连接池;

       3)系统关闭前,断开所有连接并释放连接占用的系统资源;

 

7、线程池设计

       使用连接池需要预先建立数据库连接;设计思路:

       1)长连接数据库,涉及数据库ip,端口,用户名,密码,数据库名字等;

       2)每个连接对象都是独立的连接通道,它们都是独立的;

       3)配置最小连接数和最大连接数;比如cpu可以同时并发128个线程,任务是部分需要操作数据库,部分不需要操作数据库的,通常同时操作数据库有64个线程,那么我们就把最小连接数设置为64,最多同时操作数据库为128个线程,那么我们就把最大连接数设置为128;

       4)需要一个队列管理连接;

       5)获取连接对象、归还连接对象

       6)连接池名字

 

目录
相关文章
|
6月前
|
缓存 NoSQL 关系型数据库
MySQL 与 Redis 如何保证双写一致性?
我是小假 期待与你的下一次相遇 ~
719 7
|
9月前
|
关系型数据库 应用服务中间件 nginx
Docker一键安装中间件(RocketMq、Nginx、MySql、Minio、Jenkins、Redis)
本系列脚本提供RocketMQ、Nginx、MySQL、MinIO、Jenkins和Redis的Docker一键安装与配置方案,适用于快速部署微服务基础环境。
|
11月前
|
缓存 NoSQL 关系型数据库
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
|
6月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
765 6
|
缓存 NoSQL 关系型数据库
Redis和Mysql如何保证数据⼀致?
1. 先更新Mysql,再更新Redis,如果更新Redis失败,可能仍然不⼀致 2. 先删除Redis缓存数据,再更新Mysql,再次查询的时候在将数据添加到缓存中 这种⽅案能解决1 ⽅案的问题,但是在⾼并发下性能较低,⽽且仍然会出现数据不⼀致的问题,⽐如线程1删除了 Redis缓存数据,正在更新Mysql,此时另外⼀个查询再查询,那么就会把Mysql中⽼数据⼜查到 Redis中 1. 使用MQ异步同步, 保证数据的最终一致性 我们项目中会根据业务情况 , 使用不同的方案来解决Redis和Mysql的一致性问题 : 1. 对于一些一致性要求不高的场景 , 不做处理例如 : 用户行为数据 ,
|
SQL NoSQL 关系型数据库
Redis之坑:Redis与MySQL中事务的区别
Redis之坑:Redis与MySQL中事务的区别 Note: 该篇讨论的只是Redis与MySQL中事务的区别,并不能统一代表NO-SQL与关系型SQL; 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务; 事务使用的目的 是统一管理 insert,update,delete, 这些write操作,以此来维护数据完整性。
3966 0
|
6月前
|
缓存 负载均衡 监控
135_负载均衡:Redis缓存 - 提高缓存命中率的配置与最佳实践
在现代大型语言模型(LLM)部署架构中,缓存系统扮演着至关重要的角色。随着LLM应用规模的不断扩大和用户需求的持续增长,如何构建高效、可靠的缓存架构成为系统性能优化的核心挑战。Redis作为业界领先的内存数据库,因其高性能、丰富的数据结构和灵活的配置选项,已成为LLM部署中首选的缓存解决方案。
707 25
|
11月前
|
缓存 NoSQL Java
Redis+Caffeine构建高性能二级缓存
大家好,我是摘星。今天为大家带来的是Redis+Caffeine构建高性能二级缓存,废话不多说直接开始~
1481 0
|
7月前
|
存储 缓存 NoSQL
Redis专题-实战篇二-商户查询缓存
本文介绍了缓存的基本概念、应用场景及实现方式,涵盖Redis缓存设计、缓存更新策略、缓存穿透问题及其解决方案。重点讲解了缓存空对象与布隆过滤器的使用,并通过代码示例演示了商铺查询的缓存优化实践。
333 1
Redis专题-实战篇二-商户查询缓存
|
6月前
|
缓存 运维 监控
Redis 7.0 高性能缓存架构设计与优化
🌟蒋星熠Jaxonic,技术宇宙中的星际旅人。深耕Redis 7.0高性能缓存架构,探索函数化编程、多层缓存、集群优化与分片消息系统,用代码在二进制星河中谱写极客诗篇。
1206 3

推荐镜像

更多