zoukankan      html  css  js  c++  java
  • 10.13JDBC之数据库连接池

    10.13JDBC之数据库连接池

    传统的基于数据库的Web程序模式

    • 主程序(Servletbean)中建立数据库连接

    • 进行sql操作

    • 断开数据库连接

    存在的问题

    1. 普通的JDBC数据库使用DriverManager获取,每次向数据库建立连接的时候都要将Connection加载到内存中,在验证用户名和密码,通过了以后执行操作,执行完毕在断开连接

    2. 消耗大量的资源和时间,数据库的连接资源没有得到很好的重复利用

    3. 每一次数据库连接,使用完以后都得断开连接,如果程序出现异常未能关闭,导致数据库系统中的内存泄露,最终将导致数据库重启连接

    4. 不能控制被创建的连接对象数,连接过多会导致内存泄露,服务器崩溃。

    Java的内存泄露是指内存中存在对象不能被回收

    C的内存泄露是指指向内存区域的指针丢了

    接触到的池:

    • 字符串常量池

    • 线程池

    • 数据库连接池

    数据库连接池技术

    数据库连接池的基本思想:

    为数据库连接建立一个"缓冲池",与现在缓存池当中存放一定数量的连接。需要建立连接时先从"缓冲池"取一个出来,用完再放回去。

    数据库连接池的作用:

    1. 分配、管理、释放数据库连接。

    2. 允许应用程序重复使用一个现有的数据库连接,而不是重新建立一个

    数据库连接池的特点:

    • 初始化时创建一定数量的数据库连接,这些连接的数量由最小数据库连接数确定。最大数据库连接数量限定了这个连接池能占有的最大连接数。

    • 当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中

    数据库连接池原理

     

    • 开始预设几个数据库连接线程。线程状态为free

    • 每有一个线程进行占用链接状态就会由free变成busy

    • 使用完成以后调用方法Connection.close()将连接状态由busy又变为free--->归还的时候修改事务提交的状态为自动提交

    • 超过连接池数量的线程访问数据库连接,进行等待

    多种开源的数据库连接池

    特点:

    • JDBC的数据库连接池用javax.sql.DataSource表示,DataSource只是一个接口

    • DataSource接口由服务器(`Weblogic, WebSpher,Tomcat)和一些开源组织提供实现:

      • DBCP:Apache提供的数据库连接池,Tomcat服务器自带dbcp数据库连接池,速度相对c3p0较快,但自身存在BugHibernate3已经不再提供支持。--->主要讲

      • C3P0:一个开源组织提供的数据库连接池,速度相对较慢,稳定性可以Hibernate官方推荐使用--->主要讲

      • Proxool:Sourceforge下的一个开源项目,能监控连接池状态稳定性比C3P0差一些

      • BoneCP:开源组织提供,速度快

      • Druid:阿里提供的数据库连接池,速度不确定是否有BoneCP--->主要讲

    • DataSource通常被称为数据源,包含连接池和连接池管理。习惯上把DataSource称为连接池

    • DataSource用来取代DriverManager来获取Connection,获取速度快,可以大幅度提高数据库访问速度

  • 相关阅读:
    【Spring学习随笔】1. Spring的体系结构
    MySQL图形化安装相关总结(含软件分享)
    Spring Bean 基于注解的装配
    vue的三种图片引入方式
    wx.navigateTo({ url: '', }) 跳转无效问题
    JDK环境变量配置
    如何实现Vue底部按钮点击加载更多
    Java Web学习路线
    百度地图循环添加标注,并循环为鼠标悬停标注时信息窗口问题解决
    mvc jquery 修改 viewbag
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/15464334.html
Copyright © 2011-2022 走看看