继昨天的处理之后,又来新的笔记 ,这次的笔记纯粹是个人的测试,与实际条件有关,比如,我要查询的字段不超过varchar的255的长度,所以我才这么做。
昨天做普通索引后,1100万条记录,索引 为220M,改成全文索引后,索引文件为1.1G,存储空间上,涨了5倍左右。
以下是笔记 ,请不要笑话,场景不同而已
- 经过测试
- title 字段改为全文索引后,在1100万条的时候
- 优点:
- 速度也为0.0x秒级。速度非常快
- 即使有or条件,只要带了limit参数,速度也非常快
- 缺点:
- 如果查询不带limit ,直接卡死,因为他要计算total count
- select count() 卡死
- 如果查询不存在的关键字,卡死
- 使用方法
- 尽量不做select count 查询 (数量低于100万时可以考虑,超过100万时,其实已经没有必要)
- 查询一定要带上limit条件
- 每次查询到不存在的关键字时,记录到关键词库,每次有新增记录时,select 关键词库一下,如果新增房间中有关键字,则将关键词去除,避免卡死
- 暂时不使用coreseek(sphinx)/xunsearch等第三方工具
- xunsearch只支持分词查询,不支持完全匹配
- 第三方工具,耗内存,而且增量的时候,不够及时
北京游时的小吃:
某天的早饭,骨头汤馄饨,包子是按两卖的,不是按个的。豆腐脑(好奇怪,与南方的完全不一样)
石头带我去的特色,说是豆汁相对比较正宗,认为我喝不下,结果我喝大半碗,觉得还OK。小吃是大杂烩,每样买了点,正好是吃了上述的早饭,然后实在撑不下了。不过我还是吃了好多
吃的特色馄饨店的馄饨。。(盘子上有字:馄饨候)
说这个是玫瑰酥?我一看就觉得是月饼嘛。。上海这种N种花样的月饼太多了,吃了一个,好吧,不太习惯吃这种月饼,上海的月饼我也只吃肉的,比如老大坊的鲜肉月饼,黑黑
这是一篇未完成的博客,在这里面做了一点记录
场景:需要做一个关于标题的模糊查询,只是记录有点多,而且需要相对精确,比如搜索:ac, 不能出现abc,可以接受acb,bac,之类。
测试:
1、100万数据,mysql / mongo ,在这种情况下。无论是查询什么数据,基本上都在0.00x秒级,
mysql的查询是like '%xxxx%' , mongo 是 {title:/xxxx/i}
一般情况下,两者速度真心差不多,但如果查询一下不数据库中不存在的关键字,一般都在0.2秒至2秒左右,mongo会相对好一点,在0.5秒
2、500万~1000万数据
查询条件如上
mysql 查询的时候 cpu 占40%左右,20多秒 (mysql 1100万数据)
mongo 查询的时候 CPU占50%左右,10秒/8秒左右 (mongo 550万)
这种性能没法用啊
---下一步
1、xunsearch / coreseek(sphinx)
2、mysql 全文索引
需要再次测试一下。关键mysql虽然100万只有0.00x或者0.0x秒左右。但是如果多个并发的时候就会卡死了。
所以需要再次考虑 场景的复杂性
早上锅巴在群里发了个链接(http://www.php.net/conferences/)。一看,大为震惊,这真是很难得的事情:
ThinkInLAMP is pleased to announce the first Shanghai PHP conference 2013. This event will be held on Sunday June 30th 2013 in Shanghai, China. A community oriented conference which is organized by an excellent line up and socials.
This event will concentrate on PHP languages and web based technologies used today; extension, latest dynamics and new applications within the increased demand for developers and everyone who is interested in PHP language.
There will be more than 500 developers owned over 3 year’s experiences andsenior technical persons come for learning and networking. Register soon as the Early Bird discount rate expires on May 30.
Go to http://php.thinkinlamp.com/2013 for more information, we are looking forward to seeing you in June!
看到这个,你还有什么好犹豫的?赶紧拿起手中的电话,拨打thinkinlamp的参与热线吧
这是一篇文档的简要介绍,本来没有想过要提的,因为我以前真没用过straight join,看到这个名词其实是老王的一句话,他说,利用这个优化了SQL,于是就看了一下。果然发到了这句话:
XML/HTML代码
- STRAIGHT_JOIN 实际上与内连接 INNER JOIN 表现完全一致,不同的是使用了 STRAIGHT_JOIN 后,table1 会先于 table2 载入。
- 提示
- MySQL 在执行 INNER JOIN 的时候,会根据自己内部的优化规则来决定先载入 table1 还是 table2,如果您确认 MySQL 载入表的顺序并不是最优化的时候,就可以使用 STRAIGHT_JOIN 以替代 INNER JOIN。
我参考的这页,说是关于mysql 的join有五篇:
本章节内容共分 5 部分:
- 1. MySQL JOIN 语法说明与 INNER JOIN 语法用法实例
- 2. MySQL LEFT JOIN 语法用法与实例
- 3. MySQL RIGHT JOIN 语法用法与实例
- 4. MySQL JOIN 多表连接
- 5. MySQL STRAIGHT_JOIN 与 NATURAL JOIN
- 确实 是值得一看。