数据库 之 连接池

        当我们在连接SQL Server的时候也会用到连接池,它是默认被打开的只是我们不知道罢了,今天我就来与小伙伴们分享一下我的个人理解以及网上的一些资料。

连接池---什么是连接池呢?我个人理解:其实它就相当于一个临时存放东西的容器,把暂时不用的东西放到这里,当我们需要再次使用它的时候,可以很快很方便的拿出来使用。

连接池在我们Sqlserver驱动级技术上,它可以把我们的连接字符串缓存一下.我们跟数据库连接的时候,需要三次握手.当我们用C#创建了一个数据库连接对象,一旦对它进行了关闭操作.并没有真正的立即将它销毁.它自动进入了连接池.
如果在某个时间内,比如3秒钟内,再次的访问这个数据库.并且连接字符串和刚刚那个连接字符串一模一样.此时就会直接把连接池里面的那个缓存对象拿出来直接使用来完成我们的数据库操作.减少和数据库连接的次数.这样子可以使我们的数据库性能一直保持高性能.当我们使用完连接对象,调用了close方法或者dispose方法,就进入到了连接池.等待一定的时间后,然后进行销毁.在等待时间内,如果有人连接进来,并且连接字符串一样的话,直接就可以使用操作,不需要再三次握手了,否则我在重新创建.

那什么是三次握手呢?其实就是和一个人我三次手嘛,开个玩笑不要当真哈!我来举一个小例子大家可能会清楚一些,小时候我们大家应该玩过游戏(打电话:一个小伙伴叫“大哥”,一个小伙伴叫“小弟”,然后我们自制了一个电话;)叫“大哥”小伙伴在电话的一端喊:“小弟小弟,我是大哥,听到请回答”(很明显这是叫“大哥”的小伙伴肯定有事儿要吩咐给叫“小弟”的小伙伴;这就是第一次握手);当“小弟”听到大哥的喊话以后就会回答:“大哥大哥,我是小弟,收到请讲”(这就是第二次握手);“大哥”听到“小弟”的回答以后就喊:“小弟小弟,我是大哥,我听到你说话了,现在我要你......”(这就是第三次握手)

以这种方式去链接数据库的就会非常的浪费资源,而且速度会很慢,我们为了提高效率所以就引入了连接池:下面是有连接池与没有连接池连接数据时的速度进行对比:

有连接池:


无连接池:


看到了吧,这就是差距呀;所以我们以后在使用数据库的时候,有一个遵循规则.那就是最晚打开对象. 最早关闭对象,并且一定要使用数据库连接池.打开对象和关闭对象.连接对象.Open();中间的代码越少越好,这样子数据库会越来越快.连接对象.Close();

总结的不好,希望各位读者可以提出建议,感谢您的阅读!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 22
    评论
Hyperf v2.1.4更新日志修复 #3165 修复方法 HyperfDatabaseSchemaMySqlBuilder::getColumnListing 在 MySQL 8.0 版本中无法正常使用的问题。 #3174 修复 hyperf/database 组件中 where 语句因为不严谨的代码编写,导致被绑定参数会被恶意替换的问题。 #3179 修复 json-rpc 客户端因对端服务重启,导致接收数据一直异常的问题。 #3189 修复 kafka 在集群模式下无法正常使用的问题。 #3191 修复 json-rpc 客户端因对端服务重启,导致连接池中的连接全部失效,新的请求进来时,首次使用皆会报错的问题。 新增 #3170 为 hyperf/watcher 组件新增了更加友好的驱动器 FindNewerDriver,支持 Mac Linux 和 Docker。 #3195 为 JsonRpcPoolTransporter 新增了重试机制, 当连接、发包、收包失败时,默认重试 2 次,收包超时不进行重试。 优化 #3169 优化了 ErrorExceptionHandler 中与 set_error_handler 相关的入参代码, 解决静态检测因入参不匹配导致报错的问题。 #3191 优化了 hyperf/json-rpc 组件, 当连接中断后,会先尝试重连。 变更 #3174 严格检查 hyperf/database 组件中 where 语句绑定参数。 新组件孵化 DAG 轻量级有向无环图任务编排库。 RPN 逆波兰表示法。Hyperf简介Hyperf 是基于 Swoole 4.4+ 实现的高性能、高灵活性的 PHP 协程框架,内置协程服务器及大量常用的组件,性能较传统基于 PHP-FPM 的框架有质的提升,提供超高性能的同时,也保持着极其灵活的可扩展性,标准组件均基于 PSR 标准 实现,基于强大的依赖注入设计,保证了绝大部分组件或类都是 可替换 与 可复用 的。框架组件库除了常见的协程版的 MySQL 客户端、Redis 客户端,还为您准备了协程版的 Eloquent ORM、WebSocket 服务端及客户端、JSON RPC 服务端及客户端、GRPC 服务端及客户端、OpenTracing(Zipkin, Jaeger) 客户端、Guzzle HTTP 客户端、Elasticsearch 客户端、Consul 客户端、ETCD 客户端、AMQP 组件、Nats 组件、Apollo、ETCD、Zookeeper 和阿里云 ACM 的配置中心、基于令牌桶算法的限流器、通用连接池、熔断器、Swagger 文档生成、Swoole Tracker、Blade、Smarty、Twig、Plates 和 ThinkTemplate 视图引擎、Snowflake 全局ID生成器、Prometheus 监控 等组件,省去了自己实现对应协程版本的麻烦。Hyperf 还提供了 基于 PSR-11 的依赖注入容器、注解、AOP 面向切面编程、基于 PSR-15 的中间件、自定义进程、基于 PSR-14 的事件管理器、Redis/RabbitMQ 消息队列、自动模型缓存、基于 PSR-16 的缓存、Crontab 秒级定时任务、Session、i18n 国际化、Validation 表单验证 等非常便捷的功能,满足丰富的技术场景和业务场景,开箱即用。Hyperf 功能特点框架初衷 尽管现在基于 PHP 语言开发的框架处于一个百花争鸣的时代,但仍旧未能看到一个优雅的设计与超高性能的共存的完美框架,亦没有看到一个真正为 PHP 微服务铺路的框架,此为 Hyperf 及其团队成员的初衷,我们将持续投入并为此付出努力,也欢迎你加入我们参与开源建设。设计理念 Hyperspeed + Flexibility = Hyperf,从名字上我们就将 超高速 和 灵活性 作为 Hyperf 的基因。对于超高速,我们基于 Swoole 协程并在框架设计上进行大量的优化以确保超高性能的输出。 对于灵活性,我们基于 Hyperf 强大的依赖注入组件,组件均基于 PSR 标准 的契约和由 Hyperf 定义的契约实现,达到框架内的绝大部分的组件或类都是可替换的。 基于以上的特点,Hyperf 将存在丰富的可能性,如实现 单体 Web 服务,API 服务,网关服务,分布式中间件,微服务架构,游戏服务器,物联网(IOT)等。文档齐全 我们投入了大量的时间用于文档的建设以提供高质量的文档体验,以解决各种因为文档缺失所带来的问题,文档上也提供了大量的示例,对新手同样友好。 Hyperf 官方开发文档生产可用 我们为组
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值