手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆

为列表提速

首页 > PHP >

这是一段时间的我的经历和笔记,看过之前的博客的人应该会看到,我在用mongo,是的,我将大量的数据用mongo存储了,但最终我还是放弃了。理由有很多,不过我还是慢慢列出来吧
1、为什么用mongo
因为当初设计数据库的时候仓促,本来认为只有2~30万的数据,但最终却发现会有200多万条,以后可能还会更加多,所以当初很多大字段都扔在了一个表里,导致如果用in查询,非常慢。所以我想用mongo,扔到内存里查询,看看效果是否会很好。

2、为什么又放弃使用mongo了
说实话,mongo在做关系查询的方面确实挺不错,但存在的问题是我的数据都是用php往mongo里导入,而mongo对于数字和字符串还是认得比较严 的。当然这都不是问题。。问题是现在没有专门的DBA,以后对数据不太容易,也不太方便管理。毕竟目前公司的整体项目,大部分都是用mysql在做处理, 所以,为了配合更多人,才放弃使用mongo(当然,也是为了节约内存)

3、mongo在使用时的优缺点
其实mongo在仅做处理这些条件查询的时候,并没有想象中的那样。当然确实很快,不过在第一次查询的时候还是有点慢的,然后在数据没有变化的时候查询数 据都在0.00x秒,不过,我真的没有太在意(其实有点在意,但因为那个条件也是用mysql生成出来的,再加上查询之前对于那些字段都得做一次强制转 换,否则对于查询的时候可能就出不来数据)

4、最终我怎么做了
既然我已经知道我原来的数据表的问题在哪里,我就想办法处理掉不就完了?于是写了一个脚本,自己将主表的数据中的几个重要的,用来查询和排序的字段拎出来,重建一个表,用来查询,将可变字段改成定长字段,为了提速。这样一来,速度比原来最少快了两个等级。

5、下一步我会怎么做
其实现在做很多事情都是偷懒了,比如对于字段是int型的时候,却还是用的where id = '1',而不是where id = 1;
所以这是后期考虑优化的地方。
当然因为将主要字段分拆成表,所以带来的另一个问题是,当更改原表的时候,需要对新表做更新处理。

6、最后说一下
原表的索引,原来达到了300多M,后来因为把数据迁到新表(做冗余),在新的表建的索引,只有70多M,而且原表因为将索引清除了,编辑和插入的数据又上了一个等级,最终还是觉得这样有优势 。

---PS
不一定要学我,我这也是自己的经历,没有什么可比和可参照性。当然你要骂我那是可以的




本站采用创作共享版权协议, 要求署名、非商业和保持一致. 本站欢迎任何非商业应用的转载, 但须注明出自"易栈网-膘叔", 保留原始链接, 此外还必须标注原文标题和链接.

Tags: mongo

« 上一篇 | 下一篇 »

只显示10条记录相关文章

mongodb删除索引 (浏览: 39588, 评论: 0)
mongo中的group by (浏览: 21837, 评论: 0)
关于mongo的GEO相关笔记 (浏览: 20627, 评论: 0)
mongodb 的 geo near (浏览: 19368, 评论: 1)
NND被mongodb的limit BUG搞死了 (浏览: 18700, 评论: 1)
Mongodb 中字段类型的郁闷 (浏览: 17396, 评论: 0)
mongodb用索引与不用索引的区别 (浏览: 16910, 评论: 0)
mongodb用索引与不用索引的区别(续) (浏览: 15609, 评论: 0)
SQL to Mongo Mapping Chart (浏览: 14705, 评论: 0)

发表评论

评论内容 (必填):