Ado.Net 使用【连接池】进行程序优化

目录

1、连接池介绍

1.1 连接池是什么?

1.2 连接池的分类

1.3 如何分配

1.4 移除无效链接

1.5 回收连接


1、连接池介绍

程序连接数据库需要经历:建立物理通道、与服务器初次握手、分析连接字符串、身份验证、

运行检查等过程

因此连接数据库的过程是比较占用性能的,连接池的实现就是为了对该过程进行重复利用,实现对程序性能的优化提升

1.1 连接池是什么?

        相当于一个容器:存放了一定数量的与数据库服务器的物理连接。

当需要使用的时候,会从容器中取出一条空闲的连接,而不是创建一条新的连接;使用完毕之后,该连接会被释放回到连接池中。

        由此,减少了连接数据库的开销,从而提高了应用程序的性能。

1.2 连接池的分类

        类别区分,同一时刻同一应用程序域可以有多个不同类型的连接池;

        什么来标识区分——进程、应用程序域、连接字符串window标识  共同组成的签名来标识区分。对同一程序域来说,由 连接字符串 来区分的。

        【打开一条连接,如果这条连接的类型签名与现有的连接不匹配,就会创建一个新的连接池,反之则不会创建,会共用同一个连接池】

1.3 如何分配

        根据连接请求的类型,找到与它相匹配的连接池,尽力的分配一条空闲的连接。

               1) 有空闲的连接,返回这条连接               

               2) 连接池连接已用完,创建一个新连接添加连接池中

               3)已达到了最大连接数,等待,直到有空闲的连接可用

1.4 移除无效链接

        不能正确连接到数据库服务器的连接 ,会浪费连接池空间;连接池存储与数据库服务器连接数量也是有限的,对于无效链接,应当移除。      连接池管理器会处理无效连接的移除问题

1.5 回收连接

        使用完的连接,应当即时关闭或释放,使用SqlConnection对象的Close() 和 Dispose()让连接回到连接池。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/623230.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OSPF : 区域 / 为什么非骨干互访需要经过骨干

概述 OSPF系列第二篇 , 今天来围绕着区域这个概念展开写一篇博客 分区背景 先来讨论一下技术背景 , 也就是为什么要分区 ? 所有设备都在一个区域不行吗 会有什么问题呢 . 首先明确一个知识点 : 正常状态下一个区域内的所有设备的LSDB都是一样的.区域内的路由器必须为所属的…

Android 10.0 系统语言随sim卡语言自适应变化功能实现

1.前言 在10.0的系统产品开发中,在对于sim卡这个功能模块中,在系统默认系统语言不随sim卡的语言变化,产品开发的需要要求系统语言 需要随着识别到sim卡的语言后,设置为系统默认语言,接下来就实现这个功能 2.系统语言随sim卡语言自适应变化功能实现的核心类 frameworks\…

BikeDNA(八)外在分析:OSM 与参考数据的比较2

BikeDNA(八)外在分析:OSM 与参考数据的比较2 1.数据完整性 见链接 2.网络拓扑结构 见链接 3.网络组件 本节仔细研究两个数据集的网络组件特征。 断开连接的组件不共享任何元素(节点/边)。 换句话说,…

庆祝一年的成长

本文字数:2288;估计阅读时间:6 分钟 作者:ClickHouse Team 审校:庄晓东(魏庄) 本文在公众号【ClickHouseInc】首发 随着今年即将结束,我们想要向您表达衷心的感谢,感谢您…

近两周10个令人难以置信的AI工具:

过去两周出现的最令人难以置信的AI工具: Genie:多模式文本到3D生成器Cognysys 2.0:自动创建工作流并根据提示执行任务 https://cognosys.ai MultiOn:AI个人代理,可以预订航班,订购食品等https://multion.a…

Linux more命令教程:掌握文件分页阅读(附案例详解和注意事项)

Linux more命令介绍 more命令,全称也是 more,它是一个用于满足用户分页阅读文件内容的工具。在我们需要阅读或分析文件内容时,more命令提供了一种在终端上逐页、逐行阅读长篇文件内容的方式。这个命令对于数据分析和代码审查非常有用。 Lin…

cad二次开发autolisp(一)

文章目录 一、概述1.1 简介1.2 打开编辑器1.3 调试页面 二、数据类型三、函数3.1 用户函数 四、语句4.1 常规语句4.2 流程控制语句 五、图元操作5.1 定义5.2 图元选择5.3 图元属性列表 一、概述 1.1 简介 简介:cad 二次开发语言,后缀名*.lsp适用于编写…

排序算法7----归并排序(C语言)

1、基本思想 归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法的一个非常典型的应用。 将无序的序列分解到单个元素,然后将有序的子序列合并,得到完全有序的序列:即先使每个子序列有序,再使子序列段…

React16源码: React中的异步调度scheduler模块以及时间片源码实现

React Scheduler 1 ) 概述 react当中的异步调度,称为 React Scheduler发布成单独的一个 npm 包就叫做 scheduler这个包它做了什么? A. 首先它维护时间片B. 然后模拟 requestIdleCallback 这个API 因为现在浏览器的支持不是特别的多所以在浏览当中只是去…

使用scipy处理图片——旋转任意角度

大纲 载入图片左旋转30度,且重新调整图片大小右旋转30度,且重新调整图片大小左旋转135度,保持图片大小不变右旋转135度,保持图片大小不变 在《使用numpy处理图片——90度旋转》中,我们使用numpy提供的方法,…

【PostgreSQL】函数与操作符-逻辑操作符

PostgreSQL常用的操作符 算术操作符:PostgreSQL支持基本的算术操作符,包括加法()、减法(-)、乘法(*)、除法(/)和取模(%)等。可以使用这…

命令行登录Mysql的详细讲解

目录 前言1. 本地登录2. 远程登录3. 拓展 前言 对于命令行登录Mysql一般都是用mysql -u root -p 但对于如何远程登陆,一直其他的参数还是有些盲区,对此总结科普 对于登录过程中出现的问题,可看我之前的文章: 服务器 出现ERROR …

Dreambooth Stable Diffusion始化训练环境(AutoDL)

以AutoDL为例 以下代码源自:赛博华佗——秋叶: Akegarasu 环境选择 Miniconda: Miniconda是一个轻量级的Conda环境管理系统。它包含了conda、Python和一些常用的包,以及能够管理安装其他包的能力。Miniconda是Anaconda的一个简化版&#xff0…

聊聊PowerJob的Alarmable

序 本文主要研究一下PowerJob的Alarmable Alarmable tech/powerjob/server/extension/Alarmable.java public interface Alarmable {void onFailed(Alarm alarm, List<UserInfoDO> targetUserList); }Alarmable接口定义了onFailed方法&#xff0c;其入参为alarm及tar…

【矩阵快速幂】封装类及测试用例及样例

作者推荐 视频算法专题 通俗的说&#xff0c;就是矩阵的乘方。 封装类 核心代码 class CMat { public:// 矩阵乘法static vector<vector<long long>> multiply(const vector<vector<long long>>& a, const vector<vector<long long>…

使用Python管理MySQL数据库,有录播直播私教课视频教程

查看所有数据库 from mysql.db_object import Databasedb Database(host"localhost",port3306,database"",username"root",password"zhangdapeng520" ) print(db.get_all_database())删除数据库 from mysql.db_object import Datab…

Python 面向对象之元类

Python 面向对象之元类 【一】一切皆对象 【1】元类 元类&#xff08;metaclass&#xff09;是Python中用于创建类的类。在Python中&#xff0c;类是对象&#xff0c;而元类就是类的类它们控制类的创建过程&#xff0c;允许你定制类的行为Python中内置的默认元类是type我们用…

Android JNI与Java类的转换调用

1. 前言 一般在Android中&#xff0c;对于JNI的调用&#xff0c;基本的数据类型就能满足要求了&#xff0c;具体可以看我的这一篇文章 : Android JNI/NDK 入门从一到二&#xff0c;但是最近在项目中遇到了基本类型满足不了需要的情况&#xff0c;需要在JNI中创建并操作Java类&…

Rust-语句和表达式

if-else Rust中if-else表达式的作用是实现条件分支。if-else表达式的构成方式为&#xff1a;以if关键字开头&#xff0c;后面跟上条件表达式&#xff0c;后续是结果语句块&#xff0c;最后是可选的else块。条件表达式的类型必须是bool。 if-else结构还可以当表达式使用 loop …

如何用LLM和自有知识库搭建智能agent?

用LangChain建立知识库&#xff0c;文末中也推荐其他方案。 项目源码&#xff1a;ChatPDF实现 LangChain Indexes使用 对加载的内容进行索引&#xff0c;在indexes中提供了一些功能&#xff1a; Document Loaders&#xff0c;加载文档Text Splitters&#xff0c;文档切分V…