Select Browser Mobile | Continue

Silic Group Froum Archive - Silic Security

 Forgot Password?
 Join Us
Search
Show: 5066|Reply: 19

[原创] 数据库优化

  [Copy URL]
durkworf The user has been deleted
Posted 2013-6-19 14:41:37 | Show all replies |Read Mode
作者:许仙他很无奈
来自:Silic group linux

      说好的数据优化贴,今天终于有时间写出来了。
      上亿条的数据怎么优化,很简单,用到一个中间键,sphinx介于php和mysql之间。
      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来创建。
QQ图片20130619142529.jpg 画红色箭头的地方需要注意,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服务控制。我把我自己写好的贴上来自行改动。
  1. #
  2. # Minimal Sphinx configuration sample (clean, simple, functional)
  3. #

  4. source src1
  5. {
  6.         type                        = mysql

  7.         sql_host                = localhost//数据库地址
  8.         sql_user                = root/数据库账号
  9.         sql_pass                = cao//数据库密码
  10.         sql_db                        = database//数据库
  11.         sql_port                = 3306        # optional, default is 3306//数据库端口

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

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


  15. index test1
  16. {
  17.         source                        = src1//数据源这里指上门
  18.         path                        = /var/lib/sphinx/test1//简历索引后文档存放位置
  19.         docinfo                        = extern
  20.         charset_type                = utf-8//数据编码
  21. }



  22. indexer
  23. {
  24.         mem_limit                = 256M//索引器最大使用内存
  25. }


  26. searchd//这里基本不用动
  27. {
  28.         listen                        = 9312
  29.         listen                        = 9306:mysql41
  30.         log                        = /var/log/sphinx/searchd.log
  31.         query_log                = /var/log/sphinx/query.log
  32.         read_timeout                = 5
  33.         max_children                = 30
  34.         pid_file                = /var/run/sphinx/searchd.pid
  35.         max_matches                = 1000
  36.         seamless_rotate                = 1
  37.         preopen_indexes                = 1
  38.         unlink_old                = 1
  39.         workers                        = threads # for RT to work
  40.         binlog_path                = /var/lib/sphinx/
  41. }
Copy
5、到这里基本配置就可以了。使用命令为数据库创建索引
  1. indexer -c /etc/sphinx/sphinx.conf --all
Copy
6、使用search命令测试、例如
  1. search durkworf
Copy
效果图 QQ截图20130619143922.jpg
查询时间0.103sec是不是非常快,接下来就是从php调用sphinx查询,然后就可以做社工库拉。php调用sphinx我之前有发过web源码哦。
ps:php调用sphinx需要一个api如果想在php.ini中加入这个api还是很麻烦的,同学们自己研究把。



Rate

2

View all rate

flyhsx The user has been deleted
Posted 2013-6-19 15:06:54 | Show all replies
非常专业   收藏以备后用
小威 The user has been deleted
Posted 2013-6-19 15:09:54 | Show all replies
我只能说,骚年,不错!
叶子丶 The user has been deleted
Posted 2013-6-19 16:06:52 | Show all replies
又混贡献了。。。。。先回复再弱弱看下吧。。。

许仙出版,必出精品啊。
Posted 2013-6-19 16:50:50 | Show all replies
虽然不怎么懂,很牛逼。
海洋流水` The user has been deleted
Posted 2013-6-19 16:55:03 | Show all replies
很好,有机会也摆弄一下
birk The user has been deleted
Posted 2013-6-20 09:27:27 | Show all replies
好吧,我也过来瞅瞅。 。。。。
kkkra The user has been deleted
Posted 2013-6-21 17:51:11 | Show all replies
-也许会用到的
blackbap豆 The user has been deleted
Posted 2013-6-21 21:18:08 | Show all replies
我用lucene测试。10万条记录查询耗时300+微妙.微妙级别的。
durkworf The user has been deleted
 Author| Posted 2013-6-22 13:00:24 | Show all replies
blackbap豆 发表于 2013-6-21 21:18
我用lucene测试。10万条记录查询耗时300+微妙.微妙级别的。

必须神奇,不然不发了。
wahaha The user has been deleted
Posted 2013-6-24 15:36:17 | Show all replies
durkworf 发表于 2013-6-22 13:00
必须神奇,不然不发了。

blackbap豆 使用的是lucene,指的是这个帖子里面说的,而不是sphinx吧
https://a.blackbap.org/thread-4142-1-1.html
Global The user has been deleted
Posted 2013-7-19 17:20:37 | Show all replies
大黑阔啊  数据库 是 好东西啊
Posted 2013-7-20 10:42:52 | Show all replies
恩,很不错。收藏了。
刺刀 The user has been deleted
Posted 2013-7-21 03:31:35 | Show all replies
回帖是美德
zengzhiqiang The user has been deleted
Posted 2013-7-27 14:19:53 | Show all replies
大牛,想问下虚拟空间,怎么用那个中间件呢?岂不是没办法安装?
Sunshie The user has been deleted
Posted 2014-4-12 08:46:19 | Show all replies
D:\sphinx\bin>search 111
Sphinx 2.1.7-release (r4638)
Copyright (c) 2001-2014, Andrew Aksyonoff
Copyright (c) 2008-2014, Sphinx Technologies Inc (http://sphinxsearch.com)

using config file './sphinx.conf'...
index 'test1': search error: failed to open D:/sphinx/data/.sph: No such file or
directory.

求解释  
durkworf The user has been deleted
 Author| Posted 2014-4-28 16:24:01 | Show all replies
Sunshie 发表于 2014-4-12 08:46
D:\sphinx\bin>search 111
Sphinx 2.1.7-release (r4638)
Copyright (c) 2001-2014, Andrew Aksyonoff

你没有建立索引啊
andyhao567 The user has been deleted
Posted 2014-7-16 09:43:02 | Show all replies
不错,谢谢分享
wsb147 The user has been deleted
Posted 2014-7-24 00:33:15 | Show all replies
撸主   能否把建立引所的过程写详细一点   引所部分没看懂啊!
td33332d The user has been deleted
Posted 2016-7-27 08:39:50 | Show all replies
楼主描述有点晦涩。网上有一键搭建包,很方便新手
You need to login before reply! Login | Join Us

Credit Rules of This Forum

Close

公告Privious /1 Next

小黑屋|手机版|Archiver|Silic Security

GMT+8, 2019-12-9 11:22

© 2001-2014 Silic Corp.

Quick Reply Top Return List