实现高效的数据库连接池(附带完整代码Csharp和Java实现)

实现高效的数据库连接池(附带完整代码Csharp和Java实现)

ID:36500309

大小:190.19 KB

页数:30页

时间:2019-05-11

实现高效的数据库连接池(附带完整代码Csharp和Java实现)_第1页
实现高效的数据库连接池(附带完整代码Csharp和Java实现)_第2页
实现高效的数据库连接池(附带完整代码Csharp和Java实现)_第3页
实现高效的数据库连接池(附带完整代码Csharp和Java实现)_第4页
实现高效的数据库连接池(附带完整代码Csharp和Java实现)_第5页
资源描述:

《实现高效的数据库连接池(附带完整代码Csharp和Java实现)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、相关技术:·连接池·引用记数·多线程·C#.Net·Java适宜人群·数据库应用程序程序员·系统分析员·模块设计师·有一定功底的程序员目录·引言1.数据库连接池(ConnectionPool)的工作原理·连接池关键问题分析1.并发问题2.事务处理3.连接池的分配与释放4.连接池的配置与维护·关键议题1.引用记数2.如何实现事务处理3. 管理连接池·结合代码说明1.构造方法2.启动服务StartService3.停止服务StopService4.申请 GetConnectionFormPool5.释放DisposeConnectio

2、n6.如何更新属性7.如何确定连接是否失效8.使用线程管理连接池1.threadCreate2.threadCheck9. 其他引言一般的数据库应用程序大致都遵循下面的步骤:1.初始化程序2.用户在UI上输入操作3.由用户操作产生数据库操作4.将数据库操作递交到数据库服务器1.....(重复2~4)2.关闭应用程序  而本文则着重讲解上面第4步骤.在着一步骤中我们经常是,打开数据库连接操作数据库,最后关闭数据库.  在服务器端程序设计上与数据库的操作显得十分重要,因为你要处理的数据操作十分巨大.如果频繁创建数据库连接频繁关闭数据库

3、连接则会引起效率低下甚至引发程序崩溃.  也许我们可以有另一种操作数据库的形式,我们可以在程序运行时打开一个数据库连接,让这个连接永久存在直到程序'死亡',那么这样做也有不安全隐患,我们知道一个对象存在时间越长或被使用次数越多则它表现的越不稳定,着不稳定因素是由于对象内部可能存在的潜在设计问题产生,对于数据库连接对象道理也一样.我们不能保证一个Connection对象里面能一点问题不存在.所以我们也不敢长时间将它长时间占用内存.  既然有这么多的问题由此我们需要一个能帮我们维护数据库连接的东西-它就是连接池,网上有很多的连接池例子

4、,但是多数都是简单的例子,或者介绍比较复杂的连接池原理,没有一个比较完整介绍和实现连接池的例子.这里就介绍你如何自己制作一个连接池.  对于共享资源,有一个很著名的设计模式:资源池(ResourcePool)。该模式正是为了解决资源的频繁分配﹑释放所造成的问题。为解决我们的问题,可以采用数据库连接池技术。数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接。更

5、为重要的是我们可以通过连接池的管理机制监视数据库的连接的数量﹑使用情况,为系统开发﹑测试及性能调整提供依据。连接池的基本工作原理见下图。数据库连接池(ConnectionPool)的工作原理 连接池关键问题分析  1、并发问题  为了使连接管理服务具有最大的通用性,必须考虑多线程环境,即并发问题。这个问题相对比较好解决,因为各个语言自身提供了对并发管理的支持像java,c#等等,使用synchronized(java)lock(C#)关键字即可确保线程是同步的。使用方法可以参考,相关文献。  2、事务处理  我们知道,事务具有原子

6、性,此时要求对数据库的操作符合“ALL-ALL-NOTHING”原则,即对于一组SQL语句要么全做,要么全不做。  我们知道当2个线程公用一个连接Connection对象,而且各自都有自己的事务要处理时候,对于连接池是一个很头疼的问题,因为即使Connection类提供了相应的事务支持,可是我们仍然不能确定那个数据库操作是对应那个事务的,这是由于我们有2个线程都在进行事务操作而引起的。为此我们可以使用每一个事务独占一个连接来实现,虽然这种方法有点浪费连接池资源但是可以大大降低事务管理的复杂性。  3、连接池的分配与释放  连接池的

7、分配与释放,对系统的性能有很大的影响。合理的分配与释放,可以提高连接的复用度,从而降低建立新连接的开销,同时还可以加快用户的访问速度。  对于连接的管理可使用一个List。即把已经创建的连接都放入List中去统一管理。每当用户请求一个连接时,系统检查这个List中有没有可以分配的连接。如果有就把那个最合适的连接分配给他(如何能找到最合适的连接文章将在关键议题中指出);如果没有就抛出一个异常给用户,List中连接是否可以被分配由一个线程来专门管理捎后我会介绍这个线程的具体实现。   4、连接池的配置与维护  连接池中到底应该放置多少

8、连接,才能使系统的性能最佳?系统可采取设置最小连接数(minConnection)和最大连接数(maxConnection)等参数来控制连接池中的连接。比方说,最小连接数是系统启动时连接池所创建的连接数。如果创建过多,则系统启动就慢,但创建后系统的

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。