【发布时间】:2013-08-23 23:45:54
【问题描述】:
我需要使用 MySQL 在 Grails 中部署一个应用程序。
在性能上使用基本数据源或 JNDI 有什么区别?
【问题讨论】:
我需要使用 MySQL 在 Grails 中部署一个应用程序。
在性能上使用基本数据源或 JNDI 有什么区别?
【问题讨论】:
只要它们的配置相似,就不应该有任何性能差异。它们都会汇集连接,并根据需要返回一个预先连接的实例。
您会在配置中看到差异。通常,JNDI 数据源更擅长测试死连接,以及关闭和重新创建它们。不过,这很容易在 Grails 中使用 DataSource,因为您可以配置 properties 块来指定是否定期测试连接,或者何时从池中检索连接等。较新版本的 Grails 配置了示例块,因此很容易更改设置。
唯一的复杂性是池提供者在属性名称方面几乎没有一致性。有时密码是使用password 属性设置的,有时是pass。 testOnBorrow、testWhileIdle 等设置也是如此。但这对于 JNDI 池和 Grails 数据源来说都是一个问题。在这两种情况下,您都需要知道如何配置您正在使用的池。
我更喜欢在应用程序中进行配置,因为我更喜欢独立的 WAR。您始终可以更改池提供程序以使用更强大的实现。请注意,较新版本的 Grails 使用 Tomcat JDBC Pool(这与您是否使用 Tomcat 作为服务器无关)并且它们的基准测试表明它比大多数其他实现执行得更好。而且您始终可以通过安装 jdbc-pool 插件自行安装。
【讨论】: