oracle导入solr,从Oracle数据库导入XML数据时solr dih会变慢

我正在执行一个solr-dih(dataimporthandler)任务,导入存储在Oracle数据库中的大约2000万个文档。最初,这些进口每秒将增加到500多个文档,但在前150000个文档中,速度将降至200以下,最终降低到50-60/s左右;此时,我的耐心达到了极限,我终止了这一过程。导入500万份文档不需要超过30个小时。

这些文档存储为xmltype,因此它们必须在查询中“解码”或外推。

一些团队成员认为使用getclobval()会导致JDBC管道中的内存膨胀和资源消耗(可能在服务器端),但我的测试(将getclob与xmlseriaize进行比较)似乎无法证明这一点。

也许在JDBC连接器中还有一些我还没有尝试过的连接选项,它们可以帮助减少开销并保持高吞吐量。

在过去,我使用简单的HTTP Post(在casperjs和php中)在不到一天的时间内提交了1.5亿个文档。所以我相信这是索尔·迪赫和/或我们与甲骨文的联系方式的问题。

连接如下:

name="OracDB"

type="JdbcDataSource"

driver="oracle.jdbc.driver.OracleDriver"

url="jdbc:oracle:thin:@vape.blah-blah-blah.PUB"

user="some-user-name"

password="some-user-name"

convertType="true"

/>

查询如下

选择

产品ID,

产品类型,

状态,

XML序列化(文档docxml)为XML

cdbxml.products产品

哪里

产品“type='megasowe'

和总成状态

此处使用xpath从该数据库中的XML获取数据…看起来是这样的:

name="DB/Import"

dataSource="OracDB"

onError="skip"

query=""

>

name="productxml"

rootEntity="false"

dataSource="db"

dataField="DB/Import.XML"

processor="XPathEntityProcessor"

transformer="TemplateTransformer,com.megacorp.solr.dih.Transform"

forEach="/document">

[... and a bunch more stuff ...]

我已经运行了很多测试,以查看托管架构或import.xml配置中的更改是否可以改善或降低接收,从而导致无效。

几周前的某个时间点,流程在11小时内导入了700万个文档,然后源数据集增加到了近2000万个文档,这时事情似乎偏离了轨道。

我是否有错误的JDBC连接器设置?我是否可以设置一些内容来告诉Oracle不要缓存此查询..或…???这个问题使我们困惑。在我不得不在HTTPD上输入旧的暴力数据之前寻找一些提示。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值