mysql和redis连接池

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 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)连接池名字

 

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
6天前
|
缓存 NoSQL 关系型数据库
Redis和Mysql如何保证数据⼀致?
在项目中,为了解决Redis与Mysql的数据一致性问题,我们采用了多种策略:对于低一致性要求的数据,不做特别处理;时效性数据通过设置缓存过期时间来减少不一致风险;高一致性但时效性要求不高的数据,利用MQ异步同步确保最终一致性;而对一致性和时效性都有高要求的数据,则采用分布式事务(如Seata TCC模式)来保障。
39 14
|
16天前
|
SQL NoSQL 关系型数据库
2024Mysql And Redis基础与进阶操作系列(13)作者——LJS[你个小黑子这都还学不会嘛?你是真爱粉嘛?真是的 ~;以后请别侮辱我家鸽鸽]
MYSQL日志之详解如何配置查看二进制、查询及慢查询日志;备份与恢复等具体详解步骤;举例说明、注意点及常见报错问题所对应的解决方法
2024Mysql And Redis基础与进阶操作系列(13)作者——LJS[你个小黑子这都还学不会嘛?你是真爱粉嘛?真是的 ~;以后请别侮辱我家鸽鸽]
|
16天前
|
存储 SQL NoSQL
|
16天前
|
存储 SQL NoSQL
2024Mysql And Redis基础与进阶操作系列(10)作者——LJS[你个IKUN还学不会嘛?你是真爱粉嘛?真是的 ~;以后别侮辱我家鸽鸽]
Mysql And Redis基础与进阶操作系列之存储函数和MySQL 触发器等具体举例以及详解步骤;注意点及常见报错问题所对应的解决方法]
|
16天前
|
NoSQL 关系型数据库 MySQL
2024Mysql And Redis基础与进阶操作系列(8)作者——LJS[含MySQL 创建、修改、跟新、重命名、删除视图等具体详步骤;注意点及常见报错问题所对应的解决方法]
MySQL 创建、修改、跟新、重命名、删除视图等具体详步骤;举例说明注意点及常见报错问题所对应的解决方法
|
8天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
22 4
|
6天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
19 1
|
1月前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
61 3
Mysql(4)—数据库索引
|
15天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
77 1
|
17天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
59 2

推荐镜像

更多