mysql sphinx优化,使用Sphinx做数据库优化_91Ri.org

Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应 用程序更容易实现专业化的全文检索。Sphinx特别为一些脚本语言设计搜索API接口,如PHP,Python,Perl,Ruby等,同时为 MySQL也设计了一个存储引擎插件。

Sphinx 单一索引最大可包含1亿条记录,在1千万条记录情况下的查询速度为0.x秒(毫秒级)。Sphinx创建索引的速度为:创建100万条记录的索引只需 3~4分钟,创建1000万条记录的索引可以在50分钟内完成,而只包含最新10万条记录的增量索引,重建一次只需几十秒。

下面来介绍sphinx的安装。

1、请确认安装了mysql服务器,和常用开发包。

2、确认mysql的数据结构。数据表使用表分区存储,使用phpmyadmin来创建。

c4024cd17ca85ea6b9ba4f4fdafc152e.png 画红色箭头的地方需要注意,id为主键自增,表分区存储使用20个差不多就够了。

3、安装sphinx。(老夫使用的rpm包啊,无解),下载链接http://pan.baidu.com/share/link?shareid=2554931592&uk=3959484613。

4、rpm安装完成后配置sphinx。sphinx的配置文件位于/etc/sphinx/sphinx.conf

配置文件结构非常清晰,source数据库源,index索引,indexer索引控制,searched服务控制。我把我自己写好的贴上来自行改动。

Default

#

# Minimal Sphinx configuration sample (clean, simple, functional)

#

source src1

{

type = mysql

sql_host = localhost//数据库地址

sql_user = root/数据库账号

sql_pass = cao//数据库密码

sql_db = database//数据库

sql_port = 3306 # optional, default is 3306//数据库端口

sql_query = SELECT id,username,password,email,md5password FROM alltables//select所有你想要查询的字段从你的表里

sql_query_info = SELECT * FROM alltables WHERE id=$id//从你的表里查询出id

}

index test1

{

source = src1//数据源这里指上门

path = /var/lib/sphinx/test1//简历索引后文档存放位置

docinfo = extern

charset_type = utf-8//数据编码

}

indexer

{

mem_limit = 256M//索引器最大使用内存

}

searchd//这里基本不用动

{

listen = 9312

listen = 9306:mysql41

log = /var/log/sphinx/searchd.log

query_log = /var/log/sphinx/query.log

read_timeout = 5

max_children = 30

pid_file = /var/run/sphinx/searchd.pid

max_matches = 1000

seamless_rotate = 1

preopen_indexes = 1

unlink_old = 1

workers = threads # for RT to work

binlog_path = /var/lib/sphinx/

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

#

# Minimal Sphinx configuration sample (clean, simple, functional)

#

sourcesrc1

{

type=mysql

sql_host=localhost//数据库地址

sql_user=root/数据库账号

sql_pass=cao//数据库密码

sql_db=database//数据库

sql_port=3306# optional, default is 3306//数据库端口

sql_query=SELECTid,username,password,email,md5passwordFROMalltables//select所有你想要查询的字段从你的表里

sql_query_info=SELECT *FROMalltablesWHEREid=$id//从你的表里查询出id

}

indextest1

{

source=src1//数据源这里指上门

path=/var/lib/sphinx/test1//简历索引后文档存放位置

docinfo=extern

charset_type=utf-8//数据编码

}

indexer

{

mem_limit=256M//索引器最大使用内存

}

searchd//这里基本不用动

{

listen=9312

listen=9306:mysql41

log=/var/log/sphinx/searchd.log

query_log=/var/log/sphinx/query.log

read_timeout=5

max_children=30

pid_file=/var/run/sphinx/searchd.pid

max_matches=1000

seamless_rotate=1

preopen_indexes=1

unlink_old=1

workers=threads# for RT to work

binlog_path=/var/lib/sphinx/

}

5、到这里基本配置就可以了。使用命令为数据库创建索引

Default

indexer -c /etc/sphinx/sphinx.conf --all

1

indexer-c/etc/sphinx/sphinx.conf--all

6、使用search命令测试、例如

Default

search durkworf

1

searchdurkworf

效果图

74214e44f6781f90acfb05a246951524.png

91ri.org注:这很适合上亿的数据检索,但什么数据会有上亿呢?你懂。。

link:http://bbs.blackbap.org/forum.php?mod=viewthread&tid=4304

本文由网络安全攻防研究室(www.91ri.org)信息安全小组收集整理,转载请注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值