数据导入处理程序可以使用 HikariCP 吗?

can data-import-handler use HikariCP?

我在工作中使用的是 solr4.5.1。

麻烦的是,当我执行数据导入(完全导入)时,发生了很多getConnection。所以我想HikariCP是否可以用于数据导入,但我没有发现类似的问题。

可能吗?如果是请指教。

Solr 4.5.1 与 Tomcat

数据-config.xml

<dataSource driver="oracle.jdbc.driver.OracleDriver" 
            name="jdbc" 
            url="jdbc:oracle:thin:@address/mydb" 
            user="user" password="pass"/>

大量借鉴 David H Nebinger 的 post: Tomcat and HikariCP.

安装 HikariCP

要使用 JNDI,您需要在 JNDI 声明中声明 JNDI 数据源及其所有设置、密码和缓存选项。这一点与 Solr 无关。这是一个 Tomcat 机制。 this tutorial that also makes use of HikariCP 中描述了如何执行此操作。

首先是从 http://brettwooldridge.github.io/HikariCP/ 下载 .zip 或 .tar.gz 文件。这实际上是您需要自己构建的源代码版本。

第二个选项是从 Maven Central 等来源下载构建的 jar,https://mvnrepository.com/artifact/com.zaxxer/HikariCP

获得 jar 后,复制到 Tomcat lib/ext 目录。请注意,Hikari CP 确实依赖于 SLF4J,因此您也需要将该 jar 放入 lib/ext

不要忘记将数据源的 JDBC 驱动程序放在 lib/ext 文件夹中。

配置 JNDI 数据源

JNDI 数据源的位置<Resource /> 定义取决于连接的范围。您可以通过在 Tomcat 的 conf/server.xmlconf/context.xml 中指定它们来全局定义它们,或者您可以通过在 conf/Catalina/localhost/WebAppContext.xml 中定义它们(其中 WebAppContext 是应用程序的 Web 应用程序上下文,基本上是 Tomcat 的 webapps 目录中的目录名称。

如果文件 conf/Catalina/localhost/ROOT.xml 不存在,请创建它。使用 https://github.com/brettwooldridge/HikariCP#popular-datasource-class-names 中的 table 查找您的数据源 class 名称,我们在定义元素时将需要它。

<Resource name="jdbc/SolrPool" auth="Container"
    factory="com.zaxxer.hikari.HikariJNDIFactory"
    type="javax.sql.DataSource"
    minimumIdle="5" 
    maximumPoolSize="10"
    connectionTimeout="300000"
    dataSourceClassName="oracle.jdbc.pool.OracleDataSource"
    dataSource.url="jdbc:oracle:thin:@address/mydb"
    dataSource.implicitCachingEnabled="true" 
    dataSource.user="user" 
    dataSource.password="pass" />

在 Solr 中使用 JNDI 数据源

学习完本教程后,您将需要使用声明的 JNDI 数据源,就像 described in the Solr Wiki:

<dataSource
    jndiName="java:jdbc/SolrPool"
    type="JdbcDataSource"
    user="" password=""/> <!-- leave out user/password here -->