位置: 编程技术 - 正文

在MySQL中使用Sphinx实现多线程搜索的方法(在mysql中使用视图的限制)

编辑:rootadmin

推荐整理分享在MySQL中使用Sphinx实现多线程搜索的方法(在mysql中使用视图的限制),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:在mysql中使用关键字什么定义新的语句结束符,在mysql中使用describe查看表字段信息的语法格式,在mysql中使用视图的限制,在mysql中使用索引不能避免进行全表的扫描,在mysql中使用视图的限制,在mysql中使用什么语句来查看数据表的结构,在mysql中使用什么语句来查看数据表的结构,在mysql中使用什么语句来查看数据表的结构,内容如对您有帮助,希望把文章链接给更多的朋友!

MySQL、Sphinx及许多数据库和搜索引擎中的查询是单线程的。比如说,在一台个CPU核心、个磁盘的R服务器上执行一个查询,它最多只会用到一个核心和一个磁盘。没错,只会使用一个。

如果查询是CPU密集型作业,那么会使用大约3%的整机CPU能力(以上述核机器为例)。如果是磁盘密集型,则大约会使用6%的整机IO能力(也是与上例同样的配置,个磁盘组成RAID或RAID0)。

我再换个说法吧。如果你在一台单核单磁盘的机器上执行了某个查询,花了秒,那么把同样的查询放到一台核磁盘的机器上去跑,同样需要秒,不会有丝毫改善。

你早就知道这一点了,对吧?那么,我的问题是——有没有办法可以改善呢?

如果是Sphinx,太棒了,答案是有!而且不需要花上太多的工夫。你甚至不需要修改应用和数据库,只需要稍微改下Sphinx的配置。

计划

首先,我来说明一下我们的目标。

Sphinx本身就支持分布式搜索,在很久以前就已经朝着水平扩展的目标来设计。如果索引在一台机器上放不下,可以让多台机器分别对不同的部分进行索引,设置一个聚合节点,负责从应用接收请求,然后把请求再同时发给所有的数据节点,最后将它们返回的结果合并起来,返回给应用。在应用看起来,就好像只有一台服务器在为它服务。

好,下面你猜怎么着?哈,我们可以把这个功能应用到单台机器上,让我们的查询快上n多倍。而且,现在Sphinx已经支持这种做法了,所以我们根本不用再假装查询哪些远程节点。

在MySQL中使用Sphinx实现多线程搜索的方法(在mysql中使用视图的限制)

还有另外一个好处,配置分布式搜索以后,索引是可以并行建的!

还是有一点需要注意,虽然这种做法可以加速绝大多数的查询,但还是有一些例外的情况。因为,并行的查询结果仍然需要合并起来,而这个合并过程是单线程的。而且,合并包括一些CPU密集的操作,如分级、排序,甚至用GROUP BY进行COUNT,如果数据量很大,合并过程就会变成瓶颈。

要确认这一点也很简单,只要查看Sphinx的查询日志,看看每个查询匹配的记录数有多少,我们就心里有数了。

执行

假设在服务器上一个索引配置如下 (很多细节都省略了): 现在我们使用有3个CPU核心和磁盘的机器来做这个索引--就是这个idx1.下面是我们更改的配置文件 :

做完这些后,你需要重建索引. 但是现在idx1p0到idx1p2的索引indexer命令可以同步进行.

另外,用不同的操作来分离数据不是最好的办法, 你可以在MYSQL中用一个辅助表来区分它们的范围, 配合 sql_query_range使用或是别的什么, 具体根据你的数据来决定.

写在最后

我一直都很喜欢 Sphinx,Sphinx可以如此容易的扩展到你所需要的足够多的机器上,并且这种方式在很多年前就已经在被使用了。然后,我想,我并没有和我往常一样,利用这个特性来使得在一台机器上的查询变得更快。嗯,这并不是在说它很慢或者其实什么,只是,查询永远不会太快,不是吗?

Win7、WinXP下MySql安装出错完全卸载的方法步骤 最近mysql安装出现问题:1.操作系统不同,安装过程中删除,清理也不同:window7:安装mysql过程中,最后安装到startservice的时候提示服务有问题,然后卸

MySQL中给自定义的字段查询结果添加排名的方法 我正在用MySQL客户端的时候,突然想到如果可以给查询结果添加排名该多好啊,然后就找到了一个简单的解决办法。下面是一个示例表的数据:然后我们

MySQL中三种关联查询方式的简单比较 看看下面三个关联查询的SQL语句有何区别?SELECT*FROMfilmJOINfilm_actorON(film.film_id=film_actor.film_id)SELECT*FROMfilmJOINfilm_actorUSING(film_id)SELECT*FROMfilm,film_actorWHEREfilm.

标签: 在mysql中使用视图的限制

本文链接地址:https://www.jiuchutong.com/biancheng/347649.html 转载请保留说明!

上一篇:在MySQL中创建带有IN和OUT参数的存储过程的方法(创建mysql表sql语句)

下一篇:Win7、WinXP下MySql安装出错完全卸载的方法步骤

  • 建筑公司收到预付款怎么开票
  • 计提坏账后又收回怎么做
  • 监理公司成本核算方法
  • 外汇储备保值增值
  • 网银发工资怎么增员的
  • 发票遗失重开需要收费吗
  • 递延所得税转回的会计分录
  • 增值税专用发票电子版
  • 会计凭证有哪些类型
  • 经常性支出是什么意思
  • 土地增值税清算管理规程
  • 企业微信收款如何同步给别人
  • 注册资本金应该编入政府性基金预算吗
  • 合资公司51%股东的权限
  • 所有者权益变动表
  • 开培训费专用发票开票有具体要求吗?
  • 代开专票需要去报税吗?
  • 非营利组织取得稳岗补贴收入要交税吗
  • 企业在开办期间发生的费用如何处理
  • 发生的费用可以直接计入主营业务成本吗
  • 网上申报城建税及附加怎么操作
  • 非现金资产包括
  • 产品核算会计业务流程
  • 农产品成本法计算抵扣
  • 退回多收款项开具发票原发票需要退回吗
  • 仙鹤草的功效与作用与主治功能
  • macOS Catalina10.15.4值得升级吗 macOS Catalina10.15.4更新了什么
  • 外汇延期收款办理操作指南
  • 摊销租赁费属于什么费用
  • 深度学习中模型计算量(FLOPs)和参数量(Params)的理解以及四种计算方法总结
  • thinkphp钩子场景
  • yii2框架结构
  • 企业法人个人贷款企业有风险吗
  • 预提费用的核算有哪些
  • 解决脱发的8个方法
  • 银行存款缴纳房产税会计分录
  • 被白雪覆盖的彩虹歌词
  • 福利费可以抵扣进项吗?
  • win11系统中怎样调整office底色
  • 前端vue面试题
  • vue中解决跨域问题
  • 企业微信支付年限怎么看
  • python 嵌入
  • 累计折旧累计摊销属于现金流吗
  • 个人独资企业怎么注销
  • 非流动资产基金属于什么科目
  • 代扣代缴手续费返还账务处理
  • 纸质承兑上的印花是什么
  • 借受托代销商品贷受托代销商品款
  • 现代服务包括哪些内容是什么
  • 增值税的预缴税怎么算
  • 无形资产摊销完以后得账务处理
  • 施工企业暂估成本
  • 滴滴打车开具的普通发票可以抵扣吗
  • 软件开发服务费计入什么科目
  • 营改增后增加了什么征税项目
  • 长期股权投资的账务处理
  • 绿化工程苗木成活率交工标准
  • 红字冲红什么意思
  • mysql怎么实现
  • sql行变列有几种方法
  • 如何关闭safari
  • centos7创建swap分区
  • win10edge浏览器如何切换到ie
  • mac安装应用一般放在哪个目录下
  • Windows 7(x64)下安装Ubuntu12.4的方法
  • win7无法更改设置
  • win8系统找不到wifi
  • windows7怎么打开注册表
  • linux源码包
  • win7计划任务设置
  • linux ii
  • 场景转换的技巧
  • node.js开发实战详解
  • jquery写函数
  • 小规模纳税人忘记作废发票导致超过免税范围
  • 专项附加扣除当月填报何时生效
  • 未清卡会锁死吗?
  • 微观经济学的十大原理
  • 计算出口退税的免抵税额,不计征城市维护建设税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设