MysqlDataSource 和 MysqlConnectionPoolDataSource 有什么区别?

问题描述 投票:0回答:2

我正在应用程序服务器(特别是 glassfish,但我也对其他应用程序服务器很好奇)中配置 mysql 连接,并且似乎有 2 个非常相似的资源类型和驱动程序选项。即,

MysqlDataSource
MysqlConnectionPoolDataSource

我很好奇两者之间有什么区别。无论哪种方式,glassfish 似乎都在维护连接池,因此很难说出其中的区别。

感谢您提供的任何见解。

mysql glassfish datasource
2个回答
2
投票

MysqlDataSource 是一个 Java 本机数据库接口,它返回到连接参数中定义的数据库的连接。 MysqlConnectionPoolDataSource 是 MysqlDataSource 的子类,它返回池化连接资源。区别在于您的连接资源是池化的还是连接的目标是池化的。这通常由硬资源和预期连接数决定。如果您有许多用户同时连接,您可能希望在内存等硬资源允许的情况下将尽可能多的用户集中到一个连接中。因此,您可以限制在内存中运行的驱动程序实例的数量,并允许驱动程序管理尽可能多的内部线程。

想想网络集线器与网络交换机。交换机总是更快,但只有在流量大到足以产生影响时才能实现。您的问题也是如此,如果用户数量达到内存和 CPU 所包围的潜力,池化连接将提高性能。


0
投票

1.Mysql数据源: 此类代表非池化数据源实现。每次您的应用程序从 MysqlDataSource 请求连接时,它都会创建一个到数据库的新物理连接。这种方法适合不需要连接池或数据库连接量较低的应用程序。

2.MysqlConnectionPoolDataSource: 此类表示在内部管理连接池的数据源实现。当您的应用程序从 MysqlConnectionPoolDataSource 请求连接时,它会从池中检索连接,而不是每次都创建新连接。对于需要连接池来处理大量并发数据库连接的应用程序来说,这种方法更加有效。

  In summary, if your application requires connection pooling for better performance and resource management, you should use **MysqlConnectionPoolDataSource**. On the other hand, if you do not need connection pooling and prefer to create new connections for each request, you can use **MysqlDataSource**.
© www.soinside.com 2019 - 2024. All rights reserved.