SQL面试整理(1)——数据库连接池

在web开发中,如果JSP、Servlet或EJB使用JDBC直接访问数据库,每一次数据访问请求都必须经历建立数据库连接,打开数据库,存取数据库和关闭数据库连接等操作步骤,如果频繁发生这种数据库操作,系统的性能必然会急剧下降,甚至会导致系统崩溃。数据库连接池技术是解决这个问题最常用的方法,在许多应用程序服务器(例如:Weblogic,WebSphere,JBoss)中,基本都提供了这项技术。

数据库连接池负责分配、管理和释放数据库的连接。

1. 数据库连接复用。重复使用现有的数据库连接,可以避免连接频繁建立、关闭的开销。

2. 统一的连接管理。释放空闲时间超过最大空闲时间的数据库连接,避免因为没有释放数据库连接而引起的数据库连接泄漏。

连接池的工作原理:https://www.cnblogs.com/newpanderking/p/3875749.html

常用到的开源数据库连接池有

1. C3P0是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate一起发布,包括了实现jdbc3和jdbc2扩展规范说明的Connection 和Statement 池的DataSources 对象。

2. BoneCP 是一个开源的快速的 JDBC 连接池。BoneCP很小,只有四十几K(运行时需要log4j和Google Collections的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。另外个人觉得 BoneCP 有个缺点是,JDBC驱动的加载是在连接池之外的,这样在一些应用服务器的配置上就不够灵活。当然,体积小并不是 BoneCP 优秀的原因,BoneCP 到底有什么突出的地方呢,请看看性能测试报告。

3. DBCP (Database Connection Pool)是一个依赖Jakarta commons-pool对象池机制的数据库连接池,Tomcat的数据源使用的就是DBCP。目前 DBCP 有两个版本分别是 1.3 和 1.4。1.3 版本对应的是 JDK 1.4-1.5 和 JDBC 3,而1.4 版本对应 JDK 1.6 和 JDBC 4。因此在选择版本的时候要看看你用的是什么 JDK 版本了,功能上倒是没有什么区别。

4.Proxool是一个Java SQL Driver驱动程序,提供了对你选择的其它类型的驱动程序的连接池封装。可以非常简单的移植到现存的代码中。完全可配置。快速,成熟,健壮。可以透明地为你现存的JDBC驱动程序增加连接池功能。

原文地址:https://www.cnblogs.com/znn93/p/9036411.html

时间: 2024-10-17 17:21:08

SQL面试整理(1)——数据库连接池的相关文章

数据库连接池SQL Relay简介

作者:zhanhailiang 日期:2014-12-27 简介 SQLRelay 是一个持久化的数据库连接池,用来为 Unix 或者 Linux 提供数据库连接池.代理以及负载均衡的功能. 曾在2004淘宝架构迁移充当管理Oracle数据库链接的中间件,请见: <淘宝业务发展及技术架构>分享 文字版 <淘宝业务发展及技术架构>分享 PPT版 连接池示意图: 负载均衡示意图: 功能特性 加速数据库驱动的基于 Web 的应用程序 增加 Web 应用程序的可扩展性 分布式的访问复制的数

SQL数据库优化:切割、数据库连接池--【考试系统】

上篇讲到了考试过程中,开发人员需要关注cpu和内存.sql日志也不容忽视,sql日志中显示了数据库操作系统的报错日志,给排错提供了很大的便利. 考试的数据库中写入了一些监听死锁和当前最耗资源语句的SQL语句.可以及时的监控死锁和了解当前考试进行到哪一步,是抽题,还是答题,还是交卷. 其中,听到了两个词:切割.数据库连接池. 后来查了一下,发现这两种方法都可以从不同的程度上对数据库的性能进行优化. 一.切割 横向切割: 就是把行分类,常用的两种是按照时间.索引划分.时间划分:比如5年的历史数据,根

Go组件学习——database/sql数据库连接池你用对了吗

1.案例 case1: maxOpenConns > 1 func fewConns() { db, _ := db.Open("mysql", "root:[email protected]/dqm?charset=utf8&parseTime=True&loc=Local") db.SetMaxOpenConns(10) rows, err := db.Query("select * from test where name =

【转载】高性能数据库连接池的内幕

原文:高性能数据库连接池的内幕 中生代技术群分享第三十一期 讲师:何涛 编辑:友强 注:完美修订版 摘要:如何打造高性能的数据库连接池框架,可以从哪些角度进行优化,连接池的大量优化实践如何为你的系统保驾护航,本专题将带你走进连接池的世界,为你一一揭晓.    何涛 唯品会平台架构师 何涛,现任职于唯品会平台架构部,要负责数据访问层,网关,数据库中间件,平台框架等开发设计工作.在数据库性能优化,架构设计等方面有着大量的经验积累.热衷于高可用,高并发及高性能的架构研究. 大家可能会有这样疑问:连接池

高性能数据库连接池的内幕

摘要:如何打造高性能的数据库连接池框架,可以从哪些角度进行优化,连接池的大量优化实践如何为你的系统保驾护航,本专题将带你走进连接池的世界,为你一一揭晓.    何涛 唯品会平台架构师 何涛,现任职于唯品会平台架构部,要负责数据访问层,网关,数据库中间件,平台框架等开发设计工作.在数据库性能优化,架构设计等方面有着大量的经验积累.热衷于高可用,高并发及高性能的架构研究. 大家可能会有这样疑问:连接池类似于线程池或者对象池,就是一个放连接的池子,使用的时候从里面拿一个,用完了再归还,功能非常简单,有

Java面试整理2

多线程.并发及线程的基础问题: 1)Java 中能创建 volatile 数组吗? 能,Java 中可以创建 volatile 类型数组,不过只是一个指向数组的引用,而不是整个数组.我的意思是,如果改变引用指向的数组,将会受到 volatile 的保护,但是如果多个线程同时改变数组的元素,volatile 标示符就不能起到之前的保护作用了. 2)volatile 能使得一个非原子操作变成原子操作吗? 一个典型的例子是在类中有一个 long 类型的成员变量.如果你知道该成员变量会被多个线程访问,如

C#数据库连接池 MySql SqlServer

查阅了一天的资料来学习MySql数据库连接池,终于在一遍博文上找到了,自己也整理了一下,希望对大家有用处 1. 建立线程池 1 using MySql.Data.MySqlClient; 2 using System; 3 using System.Collections; 4 using System.Collections.Generic; 5 using System.Linq; 6 using System.Text; 7 using System.Threading.Tasks; 8

PLSQL_Oracle 面试整理(汇总)(整理网上资料DBA and PLSQL面试大全)

2014-08-16 BaoXinjian 一.SQL Tunning类 1. 列举集中表的连接方式 Answer:等连接(内连接).非等连接.自连接.外连接(左.右.全) Or hash join/merge join/nest loop(cluster join)/index join ?? 连接类型 定义 例子 内连接 只连接匹配的行 select A.c1,B.c2 from A join B on A.c3 = B.c3; 左外连接 包含左边表的全部行(不管右边的表中是否存在与它们匹配

谈谈数据库连接池

前言: 最近又在为暑假的实习奔波...今天的面试被问到连接池有没有使用过,一时竟然哑口(简历上写的可以熟悉mysql啊~).回来反思总结了一下,然后又看了20分钟网上视频.为防止下次面试又出糗,于是便有了这篇随笔~ l 为什么使用数据库连接池: 为了避免每次访问数据库的时候都需要重新建立新的连接而影响运行速度,在实际的项目中通常使用数据库连接池来统一调配,从而提高数据库的访问效率. l 原理示意图: l 下载解压 l 用浏览器查看文档doc下的index.html文件 l 常见2种连接方式 (1