我正在应用程序服务器中配置 mysql 连接(特别是 glassfish,但我也对其他应用程序服务器感到好奇),并且资源类型和驱动程序似乎有 2 个非常相似的选项。即,MysqlDataSource
和MysqlConnectionPoolDataSource
。
我很好奇两者之间的区别是什么。似乎 glassfish 以任何一种方式都在维护一个连接池,因此很难说出有什么区别。
感谢您提供的任何见解。
我正在应用程序服务器中配置 mysql 连接(特别是 glassfish,但我也对其他应用程序服务器感到好奇),并且资源类型和驱动程序似乎有 2 个非常相似的选项。即,MysqlDataSource
和MysqlConnectionPoolDataSource
。
我很好奇两者之间的区别是什么。似乎 glassfish 以任何一种方式都在维护一个连接池,因此很难说出有什么区别。
感谢您提供的任何见解。
MysqlDataSource 是一个 Java 原生数据库接口,它返回到连接参数中定义的数据库的连接。MysqlConnectionPoolDataSource 是 MysqlDataSource 的子类,它返回一个池连接资源。区别在于您的连接资源是池化的还是连接的目标是池化的。这通常由硬资源和预期连接数决定。如果您有许多用户同时连接,您可能希望将尽可能多的这些用户集中到一个连接中,因为您的硬资源(如内存)允许。因此,您将限制在内存中运行的驱动程序的实例数量,并允许驱动程序管理尽可能多的线程,因为它可以在内部管理。
想想网络集线器与网络交换机。交换机总是更快,但直到流量大到足以影响时才会实现。您的问题也是如此,如果用户数量达到内存和 CPU 所包含的潜力,池连接将提高性能。