Sac*_*iya 7 database connection connection-pooling
需要有关创建数据库连接池的信息(无论数据库如何),以及它们的效率如何?他们可以提高绩效的条件是什么.
如何明确创建它?
你的问题有点模棱两可:
你想在家里建立一个连接池实现吗?如果是这样,这是一个很好的起点:http ://java.sun.com/developer/onlineTraining/Programming/JDCBook/conpool.html 但是对于生产环境而言,这是非常不鼓励的.更好地使用现有且经过全面测试的连接池API,如DBCP或C3P0.
或者您想知道如何使用连接池?如果是这样,答案取决于您正在使用的连接池API.幸运的是,通常可以在相关API的网站上找到它.
或者您想知道何时/为何使用连接池?如果是这样,如果您拥有一个长期存在的应用程序(例如Web应用程序)并且您需要经常连接数据库,它肯定会增强连接性能.正常的JDBC实践是:获取并关闭Connection,Statement并ResultSet在尽可能短的范围内(即在同一个方法块内).由于连接相当昂贵,可能需要200毫秒甚至更长时间,因此使用连接池要快得多.它按需提供连接,并负责实际关闭连接.但这并不意味着您可能会改变编写JDBC的方式,您仍然需要在尽可能最大的范围内获取并关闭它们.您需要更改的唯一方法是获取连接的方式.例如改变
connection = driverManager.getConnection();
Run Code Online (Sandbox Code Playgroud)
至
connection = connectionPool.getConnection();
Run Code Online (Sandbox Code Playgroud)
只要您的JDBC代码编写得很好,就不需要进行任何更改.
Apache DBCP的介绍页面很好地总结了这一点:
为每个用户创建新连接可能非常耗时(通常需要数秒的时钟时间),以便执行可能需要几毫秒的数据库事务。在并发用户数量可能非常大的公共托管 Internet 应用程序中,为每个用户打开一个连接是不可行的。因此,开发人员通常希望在应用程序的所有当前用户之间共享开放连接“池”。在任何给定时间实际执行请求的用户数量通常只占活动用户总数的很小一部分,并且在请求处理期间是唯一需要数据库连接的时间。应用程序本身登录 DBMS,并在内部处理任何用户帐户问题。
他们的效率如何?取决于实施。通常,我希望池在启动时或根据请求实例化连接。第一个连接将需要与数据库的真实连接,此后当您请求连接时,将为您提供一个现有的池连接。因此,第一个连接请求将花费最多时间,之后您只需从集合中提取对象(非常快)。
| 归档时间: |
|
| 查看次数: |
11782 次 |
| 最近记录: |