sphinx mysql innodb 联表数据源配置

原文地址:http://blog.phpdr.net/sphinx-mysql-innodb-join.html


数据源是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

此条目由ares发表在DB分类目录,并贴了sphinx标签。将固定链接加入收藏夹。

猜你喜欢

转载自wangxiaoxu.iteye.com/blog/2204074