今天研究了下连接池,记录下,以便以后用到。
1)连接池配置
dataSource.setUrl("jdbc:oracle:thin:@192.168.0.10:1521:bks");
dataSource.setUsername("test01");
dataSource.setPassword("123");
dataSource.setDriverClassName("oracle.jdbc.driver.OracleDriver");
dataSource.setInitialSize(10);
dataSource.setMaxActive(1);
dataSource.setMaxIdle(1);
dataSource.setMinIdle(0);
dataSource.setMaxWait(1);
现在了解的是一个连接池中只能配置一个用户进行连接数据库,这里配置的是一个测试用户test01.
2)程序直接从连接池中获取连接,不需要在进行任何用户认证
con = Connpool.setupDataSource().getConnection();
PreparedStatement pstmt = con.prepareStatement("select ID from t01");
ResultSet rs = pstmt.executeQuery();
3)程序开始执行SQL语句,执行完毕后,断开连接.
4)连接池会保持当前的连接不断开,同时也会保持当前的session不断开.
通过如下实验验证了下:
1)开启一个Application,Get an Connection from Connection Pool.
2)Execute an SQL
3)Close the connection
4)Get other connection from Connection Pool
5)Execute other SQL
6)Close the Connection
7)Get the session information from v$session,the session is not closed,and execute all the sql on this session.
下面是记录的SQL结果:
SELECT sid,serial#,sql_text FROM v$session a
JOIN v$sql b
ON a.prev_sql_id=b.sql_id
where username='TEST01';
1241 13516 select ID from t01
1241 13516 select ID from t02
oracle 会通过如下参数进行cached 3次以上的cursor,以便提高性能,避免重新Open an Cursor来执行SQL语句:
SQL> show parameter session_cached_cursors;
NAME TYPE VALUE
------------------------------------ ----------- ---------------------
session_cached_cursors integer 20
Note:
1)
SESSION_CACHED_CURSORS specifies the number of session cursors to cache. Repeated parse calls of the same SQL statement cause the session cursor for that statement to be moved into the session cursor cache. Subsequent parse calls will find the cursor in the cache and do not need to reopen the cursor. Oracle uses a least recently used algorithm to remove entries in the session cursor cache to make room for new entries when needed.
This parameter also constrains the size of the PL/SQL cursor cache which PL/SQL uses to avoid having to reparse as statements are re-executed by a user.
2)
If an application repeatedly issues parse calls on the same set of SQL statements, then the reopening of the session cursors can affect system performance. To minimize the impact on performance, session cursors can be stored in a session cursor cache. These cursors are those that have been closed by the application and can be reused. This feature can be particularly useful for applications that use Oracle Forms, because switching from one form to another closes all session cursors associated with the first form.
Oracle checks the library cache to determine whether more than three parse requests have been issued on a given statement. If so, then Oracle assumes that the session cursor associated with the statement should be cached and moves the cursor into the session cursor cache. Subsequent requests to parse that SQL statement by the same session then find the cursor in the session cursor cache.
To enable caching of session cursors, you must set the initialization parameter SESSION_CACHED_CURSORS. The value of this parameter is a positive integer specifying the maximum number of session cursors kept in the cache. An LRU algorithm removes entries in the session cursor cache to make room for new entries when needed.
You can also enable the session cursor cache dynamically with the statement:
ALTER SESSION SET SESSION_CACHED_CURSORS = value;
To determine whether the session cursor cache is sufficiently large for your instance, you can examine the session statistic session cursor cache hits in the V$SYSSTAT view. This statistic counts the number of times a parse call found a cursor in the session cursor cache. If this statistic is a relatively low percentage of the total parse call count for the session, then consider setting SESSION_CACHED_CURSORS to a larger value.
分享到:
相关推荐
一、实验目的: ...(5)理解数据库连接池的基本原理和思想,学会在tomcat服务器中配置数据库连接池,并掌握从连接池中获取连接的基本方法。 (6)初步理解数据访问层的基本设计方法,理解web的分层架构。
【标题】: 初步学习Web开发:使用德鲁伊数据连接池与Tomcat搭建本地服务器 【描述】: 在Web开发的初期阶段,我们需要掌握基础的环境搭建和数据库操作。这里我们将使用德鲁伊(Druid)数据连接池来管理数据库连接,...
综上所述,这个项目涵盖了串口通信基础、短信猫池的使用、AT指令集的应用以及C#编程技巧,是理解并实现串口短信服务的一个典型示例。开发者可以通过这个项目学习到如何在实际环境中搭建和调试串口通信系统,对提高...
0.90a版本初步实现了基本的连接池功能,包括连接的初始化、分配、回收和销毁。而0.95a版本则进一步完善了这部分功能,例如引入了更精细的连接状态检查,确保返回给用户的连接始终处于有效状态。 3. **并发控制** ...
总结来说,本课程涵盖了光分析技术的基础知识,包括比色分析、分光光度法以及色度传感器的应用,并通过实际实验加深了对理论的理解。这些技术广泛应用于化学、环境科学、生物医学等领域,是现代科技中不可或缺的一...
总之,Oracle OLAP的初步开发应用需要理解JDeveloper的使用,熟悉BI组件,以及掌握在Web服务器上的部署技巧。通过学习和实践,你将能够利用Oracle OLAP的强大功能,创建出高效的数据分析和决策支持系统。
2. 单例模式:用于Java中从连接池获取连接的类,确保全局只有一个实例,提高效率并避免资源浪费。 六、代码示例: 展示了Tomcat配置数据库连接池的XML代码和使用单例模式获取连接的Java代码。 七、系统效果: 通过...
5. 数据库连接池:C3P0、HikariCP、Apache DBCP等是常见的Java数据库连接池实现,它们管理数据库连接的生命周期,提高应用程序的性能和资源利用率。 6. Spring JDBC和Spring Data JPA:Spring框架提供了对数据库...
锂电池动力极耳成形机是锂电池制造过程中至关重要的设备,主要负责将电芯的极片进行裁切和成型,形成连接电池外部电路的关键部件——极耳。极耳的品质直接影响到电池的整体性能和安全性。本压缩包文件包含了与锂电池...
6. **数据源管理**:DAO通常需要连接池来管理数据库连接,以提高系统的性能和资源利用率。 通过DAO模式,开发者可以将数据访问的复杂性隐藏起来,使得业务逻辑更易于理解和测试。当需要更换数据存储方案(如从MySQL...
3. 详细设计:基于初步设计,用CAD软件建立详细模型,包括各个零部件及其连接方式。 4. 设计验证:通过模拟分析,检查设计的可行性、强度和稳定性,解决潜在问题。 5. 输出图纸:生成工程图纸,包括装配图、零件图、...
当提交新的SQL语句时,Oracle会在共享池中进行严格的字符级匹配来查找是否存在相同的语句,这一过程包括对空格、换行和绑定变量的检查。 绑定变量(bind variables)是SQL优化的一个关键点,它们可以防止因每次查询...
这涉及到了SQL语言、数据库连接池的概念,以及如何安全有效地发送查询、插入、更新和删除等操作。学生需要理解数据库的结构、事务处理以及错误处理机制。 四、实习总结与体会 最后,报告要求学生总结实习过程中的...
1. **实践JavaWeb技术**:通过实际项目开发,加深对JavaWeb技术的理解与应用能力。 2. **设计模式的应用**:初步接触并运用设计模式,特别是GoF(Gang of Four)设计模式,理解其在软件开发中的价值。 3. **小型系统...
总的来说,这份压缩包文件为了解和研究污水处理厂的初步设计提供了丰富的资料,无论是对环境科学的研究者,还是对水利工程、环保工程的从业者,都有着极高的学习和参考价值。通过深入研究这些CAD图,可以更好地理解...
以上是对Apache模块的初步研究总结,深入理解和实践Apache模块API可以极大地增强Web服务器的功能,实现高度定制化的Web服务解决方案。通过不断研究和实践,可以进一步优化和扩展这些模块,以满足不断变化的Web应用...
- **连接池管理**:使用数据库连接池可以有效地管理和重用数据库连接,减少频繁创建和关闭连接所带来的开销。 - **结果集处理**:对于大型查询结果,可以采用分批读取的方式,避免一次性加载过多的数据。 #### 结论...
3. **JDBC**:Java数据库连接(JDBC)是与数据库交互的基础,需要了解JDBC的基础知识,如连接池的使用,如何利用DataSource和RowSet进行数据操作,以及如何通过JDBC连接Oracle和MySQL。 4. **Web前端技术**:HTML、...
此外,还需要对TCP连接进行管理,包括处理连接池、选择可用连接、连接超时和关闭机制等。这些任务的实现往往复杂且容易出错。Netty的出现,通过封装底层的网络操作和多线程细节,使得开发者能够更加专注于业务逻辑的...