|
下列部分提供有关如何将 JDBC 应用程序的性能提到最佳程度的提示:
配置数据源中的连接缓冲池时,将“Initial Capacity”的值设置为等于“Maximum Capacity”的值,这是一种提高 WebLogic Server 应用程序中 JDBC 性能的简单而直观的方法。
创建数据库连接在任何环境中都是一种开销相对较大的进程。通常情况下,连接缓冲池中的连接一开始都很少。随着客户端连接需求的升高,缓冲池中的连接可能不足以满足请求。WebLogic Server 会创建另外的连接,将其添加到缓冲池中,直至达到缓冲池大小上限为止。
启动服务器时而不是按客户端的需要初始化所有连接,这是一种避免客户端使用服务器时因创建连接而受到延迟的方法。将初始连接数设置为等于数据源配置“连接缓冲池”选项卡中的最大连接数。请参阅“管理控制台联机帮助”中的 JDBC 数据源: 配置: 连接缓冲池。仍需要在投产前的性能测试过程中确定“Maximum Capacity”的最佳值。
有关详细调整信息,请参阅“配置和管理 WebLogic JDBC”中的调整数据源连接缓冲池选项。
另一提高 JDBC 应用程序性能的简单方法是避免浪费资源。下列是一些可以避免浪费 JDBC 相关资源的情况:
启用“Test Connections on Reserve”后,服务器实例会先检查数据库连接,然后再向客户端返回该连接。这有助于降低向客户端传递无效连接的风险。
但这种操作的开销相当大。通常,服务器实例通过先对每个连接执行完整的 SQL 查询再将其返回来执行测试。如果 SQL 查询失败,则连接被破坏,并新建代用连接。WebLogic Server 9.x 的“保留时测试连接”功能中有一个新的可选性能调整参数。通过上述 9.x 中的新可选性能调整参数,WebLogic Server 可以在所配置的客户端上次成功使用后的一段时间内跳过此 SQL 查询测试(默认值为 10 秒)。客户端将连接返回缓冲池时,WebLogic Server 会对该连接添加时间戳。如果在上述时段内将此特定连接返回客户端,则 WebLogic Server 将随后跳过 SQL 查询测试。该时段一旦期满,WebLogic Server 就会执行 SQL 查询测试。对于采用“保留时测试连接”的繁忙系统,通过此功能可以显著提高性能。
在应用程序或 EJB 中使用预处理语句或可调用语句之后,应用程序服务器与数据库服务器之间及数据库服务器本身的通信处理开销会很大。为了将处理开销降到最低程度,WebLogic Server 可以缓存在应用程序中使用的预处理语句和可调用语句。当应用程序或 EJB 调用在缓存中存储的任何语句时,WebLogic Server 将重用在缓存中存储的语句。重用预处理语句和可调用语句可以降低数据库服务器中 CPU 的使用率,从而提高当前语句的执行速度,并留出 CPU 周期来执行其他任务。有关详细信息,请参阅“配置和管理 WebLogic JDBC”中的使用语句缓存提高性能。
使用语句缓存可以显著提高性能,但必须在决定使用语句缓存前考虑其局限性。有关详细信息,请参阅“配置和管理 WebLogic JDBC”中的语句缓存的使用限制。
要将应用程序保留数据源中数据库连接耗费的时间缩到最短,以及避免线程争用数据库连接,可将 Pinned-To-Thread 属性添加到数据源的“连接属性”列表中,然后将其值设置为 true。
启用 Pinned-To-Thread 后,WebLogic Server 将在应用程序首次使用线程保留连接时将数据源中的一个数据库连接固定到此执行线程。应用程序使用完该连接并调用 connection.close()(此方法在其他情况下将把连接返回数据源)时,WebLogic Server 将把该连接留给执行线程,不会将其返回数据源。当应用程序随后使用同一执行线程请求连接时,WebLogic Server 将提供该线程已保留的连接。多个线程尝试同时保留一个连接时,数据源中不会发生锁定冲突,尝试在数量有限的数据库连接中保留同一连接的线程之间也没有冲突。
| 注意: | 在此版本中,Pinned-To-Thread 功能对多数据源、Oracle RAC 和 IdentityPool 无效。如果出现连接故障,或连接标识不匹配,则这些功能依赖于将连接返回连接缓冲池后再重新将其获取的能力。 |
请参阅“管理控制台联机帮助”中的JDBC 数据源: 配置: 连接缓冲池。
数据库应用程序性能的提高或降低大多并不取决于应用程序语言,而是取决于设计应用程序的方法。客户端的数量和位置、DBMS 表和索引的大小和结构以及查询的数量和类型都会影响应用程序性能。有关如何设计数据库应用程序的详细信息,请参阅“WebLogic JDBC 编程”中的设计应用程序以获得最佳性能。
|