搭建了一个简单的Spider引擎的测试环境,数据900万条左右,id是500万以下的放在分区1,500万以上的放在分区2。表的创建语句如下:
drop database if exists myspider;
create database myspider;
use myspider;
Create table tbl_t(
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
name string
) engine = Spider
Connection ' table "tbl_t", user "msandbox", password "msandbox" '
partition by range ( id ) (
partition pt1 values less than (5000000) comment 'host "rdb1", port "3306"',
partition pt2 values less than (MAXVALUE) comment 'host "rdb2", port "3306"'
);
发现,执行带limit的查询语句时速度极慢。下边的简单查询居然用了13分钟。
select * from tbl_t1 order by id desc limit 1;
id列是有索引的,分别在两个分区服务器(rdb1,rdb2)里执行同样的语句,速度都在1毫秒左右。这是什么原因呢?
再次在Spider服务器执行同样的查询,然后在rdb1、rdb2里执行show processlist,发现时间都花在了sending data上,先rdb1再rdb2,每个都sending了6分多。
终于明白了,Spider引擎在利用了condition pushdown后,虽然可以把查询条件传递到分区服务器,但是却不能传递limit。
为什么不让limit可以传递呢?limit n 这样的简单limit,实现起来不难呀,只要在各个分区服务器分别limit n 一下,再把各个分区服务器的结果集合并在一起,再做一次limit n 就可以了。但是,对于limit offset,n 这样的查询,就不能再各个分区服务器简单的执行limit offset,n 了,至少要传递 limit offset+n 才可以,然后在Spider服务器把各个分区的服务器的结果集合并在一起,做一次 limit offset,n 。不过至少现在的Spider引擎还没有实现这个功能。
如果在查询中加入where条件,限制分区结果集的数量(减少sending data 的时间),即使没有传递limit,也会快很多,这是使用Spider引擎需要注意的。
分享到:
相关推荐
J-Spider:是一个完全可配置和定制的Web Spider引擎.你可以利用它来检查网站的错误(内在的服务器错误等),网站内外部链接检查,分析网站的结构(可创建一个网站地图),下载整个Web站点,你还可以写一个JSpider插件来扩展...
2. **物理备份限制**:由于Spider引擎不直接存储数据,因此无法直接进行物理备份,需要对后端数据库进行单独备份。 3. **单点故障风险**:Spider引擎作为数据访问的唯一入口,其单点故障可能会影响整个系统的稳定性...
Mozilla的SpiderMonkey是第一个JavaScript引擎,由Mozilla基金会开发,用于支持Firefox浏览器和其他Mozilla相关项目。这个引擎实现了ECMAScript标准,使得JavaScript代码能够被高效地解析和执行。 SpiderMonkey的...
搜索引擎是互联网上的一种重要工具,它的核心功能是通过爬虫(Spider)技术抓取网络上的信息,然后对抓取的数据进行处理和索引,以便用户能够快速、准确地找到所需内容。在这里,我们将深入探讨“搜索引擎,spider...
C++ js 互相调用 spider monkey
这个压缩包文件“SpiderMonkey_JSAPI”包含了SpiderMonkey的JavaScript Application Programming Interface(JSAPI)的详细参考文档,方便开发者在没有网络连接的情况下也能快速查阅API。 **JSAPI概述** JSAPI是...
PHPDig蜘蛛(phpdig_spider)是PHPDig搜索引擎的重要部分,主要负责从互联网上抓取和分析网页内容。`spider.php`和`robot_functions.php`是实现这一功能的关键脚本,而`www.pudn.com.txt`可能是用于配置抓取行为的...
Black Spider 1.7.2 是一款网络安全工具,主要用于上传shell和检查系统漏洞。这个版本的更新可能包含了一些新的功能和改进,使得它在黑客防御和渗透测试中更加强大和有效。"Black_Spider_1.7.2.zip" 是这个工具的...
**Spidermonkey38.rar** 是一个包含特定版本的SpiderMonkey JavaScript引擎的压缩包,它主要用于在Windows 10环境下,配合Visual Studio 2015进行C++开发,以支持运行Java脚本。SpiderMonkey是Mozilla公司开发的一个...
由于技术限制,搜索引擎的Spider无法抓取互联网上的所有网页。它们通常只抓取那些链接深度较高的网页,即被更多其他网页链接的页面,认为这些页面更具重要性。此外,有些Spider还会设定访问层数限制,避免过度抓取...
【标题】"Spider_java.zip" 是一个包含Java实现的网络爬虫项目的压缩包,主要针对搜索引擎数据抓取。这个项目的核心在于使用Java编程语言来构建一个能够自动化浏览网页、解析HTML内容并收集所需信息的程序。网络爬虫...
SpiderMonkey是Mozilla开发的一款JavaScript引擎,它以快速、小巧和高度可嵌入而著称。在JavaScript的世界里,SpiderMonkey是最早的实现之一,为Mozilla Firefox等浏览器提供了JavaScript的解析和执行能力。本压缩包...
**Spider:开源爬虫引擎详解** Spider是一种优秀的开源爬虫引擎,主要针对互联网数据的抓取和处理。它以其高效、灵活和可扩展性而受到开发者们的青睐。在这个Eclipse项目中,Spider被设计为一个Java开发的工具,...
这种索引对于搜索引擎优化(SEO)、市场研究、社交媒体分析等多种应用场景极其有用。 在科研领域,Spider的应用广泛且深入。例如,在社会网络分析中,研究者可能需要获取社交媒体平台上的用户关系数据,分析用户的...
SpiderMonkey是Mozilla公司开发的一款JavaScript引擎,它是Firefox浏览器的核心组成部分之一。这个名为"spiderMonkey_js-1.5-rc6a.tar.gz"的压缩包文件包含了SpiderMonkey的1.5版本的源代码,其中rc6a代表的是...
"Spider"在这里指的是一个在Matlab环境下实现的机器学习工具箱,主要用于分类和回归任务。在机器学习领域,"Spider"可能是一个自定义的库,集合了多种算法以供研究和应用。以下将详细探讨与这个工具箱相关的知识点:...
**SpiderMonkey 1.6:JavaScript 引擎的深度解析** SpiderMonkey 是 Mozilla 开源项目中的一个关键组件,它是一个高性能的 JavaScript 引擎,由 Brendan Eich 在 1998 年创建,旨在为 Netscape Navigator 浏览器...
为了进一步优化检索性能,Webspider支持使用Sphinx等搜索引擎技术进行索引构建。Sphinx是一款快速、全文本搜索引擎,特别适合于实时索引和高速搜索,这使得抓取的网页数据能够被快速检索和访问。 在【压缩包子文件...
总之,SpiderMonkey 31.2.0作为一款成熟的JavaScript引擎,为开发者提供了强大的工具来实现JavaScript的嵌入式应用,其高效的执行能力和灵活的API使其在各种场景下都能发挥重要作用。通过深入理解和熟练使用,开发者...
【标题】:文章爬虫(Spider)开发指南 在信息技术领域,网络爬虫(Web Spider)是一种自动遍历网络并抓取网页信息的程序。在这个案例中,我们关注的是一个特定于“Article Spider”的项目,它专注于从cnblogs.com...