sphinx mysql innodb 联表数据源配置

数据源是MyISAM一般情况下不会有什么问题,数据量不是超大的情况下速度很快。现在的情况是我把所有数据表改成了InnoDB,有一个数据源建立索引的速度慢了100倍,数据源是一个联表的结果,60W联5W。

建立索引的时候iostat查看io状态%util一栏始终是100,增加innodb_buffer_pool_size也没有用,一共没多少内存,这个值改多大也是杯水车薪。

把两张表改回MyISAM之后建立索引速度恢复正常,为了这个全文索引改引擎不太合适,没想到innodb和myisam区别这么大。后来到sphinx官网查手册找到了解决办法,建立索引时每次取一部分数据解决问题。

source lrc
{
 type = mysql
 sql_host = 127.0.0.1
 sql_user = xxx
 sql_pass = xxx
 sql_db = lrc
 sql_query_range = SELECT MIN(id),MAX(id) FROM lyrics
 sql_range_step = 10000
 sql_query = SELECT a.id,a.name as lname,b.name as aname FROM lrc a join artist b on a.artist=b.id where a.id>=$start and a.id<=$end
 #sql_attr_uint = group_id
 #sql_attr_timestamp = date_added
 sql_query_info = SELECT * FROM lrc WHERE id=$id
}

手册地址:http://sphinxsearch.com/docs/2.0.4/sql.html

发表评论

电子邮件地址不会被公开。

*