请选择
进入手机版
|
继续访问电脑版
首页
Portal
资讯
社区
BBS
登录
/
注册
用户名
Email
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
本版
文章
帖子
用户
本版
文章
帖子
用户
道具
勋章
任务
门户
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
社区
›
数据库
›
MySQL与Redis数据库连接池介绍(图示+源码+代码演示) ...
MySQL与Redis数据库连接池介绍(图示+源码+代码演示)
[ 复制链接 ]
猿梦
2022-12-30 11:45:08
开关曹尔蓝做完%桌子唐小畅听懂%数据库连接池(Connection pooling)是程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由程序动态地对池中的连接进行申请,使用,释放。简单的说:创建数据库连接是一个很耗时的操作,也容易对数据库造成安全隐患。所以,在程序初始化的时候,集中创建多个数据库连接,并把他们集中管理,供程序使用,可以保证较快的数据库读写速度,还更加安全可靠。不使用数据库连接池如果不使用数据库连接池,对于每一次SQL操作,都要走一遍下面完整的流程:1.TCP建立连接的三次握手(客户端与 MySQL服务器的连接基于TCP协议)2.MySQL认证的三次我收3.真正的SQL执行4.MySQL的关闭5.TCP的四次握手关闭可以看出来,为了执行一条SQL,需要进行大量的初始化与关闭操作使用数据库连接池如果使用数据库连接池,那么会事先申请(初始化)好相关的数据库连接,然后在之后的SQL操作中会复用这些数据库连接,操作结束之后数据库也不会断开连接,而是将数据库对象放回到数据库连接池中资源重用:由于数据库连接得到重用,避免了频繁的创建、释放连接引起的性能开销,在减少系统消耗的基础上,另一方面也增进了系统运行环境的平稳性(减少内存碎片以及数据库临时进程/线程的数量)。更快的系统响应速度:数据库连接池在初始化过程中,往往已经创建了若干数据库连接置于池中备用。 此时连接的初始化工作均已完成。对于业务请求处理而言,直接利用现有可用连接,避免了从数据库连接初始化和释放过程的开销,从而缩减了系统整体响应时间。统一的连接管理,避免数据库连接泄露:在较为完备的数据库连接池实现中,可根据预先的连接占用超时设定,强制收回被占用连接。从而避免了常规数据库连接操作中可能出现的资源泄露。如果说你的服务器CPU是4核i7的,连接池大小应该为((4*2)+1)=9相关视频推荐90分钟搞懂数据库连接池技术|linux后台开发《tcp/ip详解卷一》: 150行代码拉开协议栈实现的篇章学习地址:C/C++Linux服务器开发/后台架构师【零声教育】-学习视频教程-腾讯课堂需要C/C++ Linux服务器架构师学习资料加qun获取(资料包括C/C++,Linux,golang技术,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK,ffmpeg等),免费分享源码下载下载方式:dongyusheng/csdn-code/tree/master/db_pool(Github中下载)db_pool目录下有两个目录,mysql_pool目录为MySQL连接池代码,redis_pool为redis连接池代码下面介绍mysql_poolCDBConn解析概念:代表一个数据连接对象实例相关成员:m_pDBPool:该数据库连接对象所属的数据库连接池构造函数:绑定自己所属于哪个数据库连接池Init()函数:创建数据库连接句柄CDBPool解析概念:代表一个数据库连接池相关成员:Init()函数:常见指定数量的数据库实例句柄,然后添加到m_free_list中,供后面使用GetDBConn()函数:用于从空闲队列中返回可以使用的数据库连接句柄RelDBConn()函数:程序使用完该数据库句柄之后,将句柄放回到空闲队列中测试之前,将代码中的数据库地址、端口、账号密码等改为自己的(代码中有好几处)进入MySQL,创建mysql_pool_test数据库进入到mysql_pool目录下,创建一个build目录并进入:然后输入如下的命令进行编译之后就会在目录下生成如下的可执行文件输入如下两条命令进行测试:可以看到不使用数据库连接池,整个操作耗时4秒左右;使用连接池之后,整个操作耗时2秒左右,提升了一倍源码下载下面介绍redis_pool测试进入到redis_pool目录下,创建一个build目录并进入:然后输入如下的命令进行编译之后就会在目录下生成如下的可执行文件输入如下的命令进行测试:可以看到不使用数据库连接池,整个操作耗时182ms;使用连接池之后,整个操作耗时21ms,提升了很多进入redis,可以看到我们新建的key:
相关帖子
redis和mysql区别,1、偶redis和mysql区别曹代丝很%数据库老师会问哪些
数据多的时候为什么要使用redis而不用mysql?
redis是关系型数据库吗
mysql读写分离和用Redis做缓存,这两种方案有什么异同
redis和mysql区别#同样的请求量如果打到MySQL上
redis和mysql区别&提交事务时当queue 中有语法错误语句会discard 整个
redis和mysql区别^Redis处理完业务逻辑之后
redis┃面试官问我redis事务和mysql事务的区别,我
Redis-Redis可以作为一个数据库使用吗
redis和mysql区别*本文介绍MySQL与Redis缓存的同步的两种方案
回复
使用道具
举报
相关文章
navicat for 激活码?系统上的部分程序进行
navicat for 激活码?常见的SQL面试题:经典
mybatis原理‘至此Spring成功对接MyBatis
mybatis原理^深入剖析mybatis原理(二)
mybatis原理!《深入理解mybatis原理》 Myb
navicat for 激活码$里面也可能保存的有密
黑马程序员全套视频,就是在北化工大学里的
怎么学会python库
一文看尽2018全年AI技术大突破:NLP跨过分
python自学看什么书,以及2、门python自学看
navicat for 激活码?系统上的部分程序进行
navicat for 激活码?常见的SQL面试题:经典
mybatis原理‘至此Spring成功对接MyBatis
mybatis原理^深入剖析mybatis原理(二)
mybatis原理!《深入理解mybatis原理》 Myb
navicat for 激活码$里面也可能保存的有密
黑马程序员全套视频,就是在北化工大学里的
怎么学会python库
一文看尽2018全年AI技术大突破:NLP跨过分
python自学看什么书,以及2、门python自学看
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖后跳转到最后一页
发帖
猿梦
2022-12-30 11:45:08
关注
0
粉丝关注
133901
主题发布
板块介绍填写区域,请于后台编辑
最新文章
navicat for 激活码?系统上的部分程序进行
navicat for 激活码?常见的SQL面试题:经典
mybatis原理‘至此Spring成功对接MyBatis
mybatis原理^深入剖析mybatis原理(二)
mybatis原理!《深入理解mybatis原理》 Myb
navicat for 激活码$里面也可能保存的有密
黑马程序员全套视频,就是在北化工大学里的
怎么学会python库
一文看尽2018全年AI技术大突破:NLP跨过分
python自学看什么书,以及2、门python自学看
热门板块
Python
Java
C/C++
前端
数据库
移动
AI
区块链
物联网
运维