solr data import性能優化

背景:數據結構

    solr 4.* 或者 solr 5.1xml

    數據結構存在entity嵌套字符串

問題描述:源碼

    全量導入100萬條數據的話,子entity的query語句會被調用100萬次,因爲solr沒有使用PreparedStatement(綁定變量的方式),SQL會在DB Server上硬解析100萬次。it

    此問題是solr的bug(solr-1262),從3.*到目前(5.1.0)一直沒有修改。table

解決方法:變量

    修改solr的源碼,改成使用PreparedStatement(綁定變量的方式)。select

    偷懶的方式能夠hack一下solr的代碼,好比hack

    一、將query的格式改成 "select * from tableA where id=?###123"。bug

    二、在JDBCDataSource中將Statement修改成PreparedStatement,並自行解析query中的字符串,其中真正的SQL爲select * from tableA where id=?,參數爲123。

    更完備的方法能夠修改db-data-config.xml的schema,增長支持PreparedStatement的屬性~

相關文章
相關標籤/搜索