V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐工具
RoboMongo
推荐书目
50 Tips and Tricks for MongoDB Developers
Related Blogs
Snail in a Turtleneck
laiwei
V2EX  ›  MongoDB

我把数据存储引擎从mongodb更换为mysql了,mongodb磁盘空间浪费太厉害了

  •  
  •   laiwei · 2012-09-15 23:33:04 +08:00 · 14519 次点击
    这是一个创建于 4457 天前的主题,其中的信息可能已经有所发展或是发生改变。
    项目之初,使用的是mongodb来存储用户数据,当时考虑到的是在数据量变大的情况下,期望查询速度保持基本恒定。

    现在,在2200个用户,大概440万条数据,mongodb共占用了20G的磁盘。

    因为磁盘较贵,

    因此更换为mysql存数据,启用innodb compression,数据转换后,占用了7G,相比mongo,节省了13G的磁盘空间。对于在linode上的服务,相当于每月节省了12$ ^^


    http://laiwei.net/2012/09/15/mongodb和mysql的一个小小的取舍比较/
    15 条回复    1970-01-01 08:00:00 +08:00
    KiseXu
        1
    KiseXu  
       2012-09-16 00:06:58 +08:00
    感谢技术分享,很实用,本来我也想尝试下用mongodb
    liuxurong
        2
    liuxurong  
       2012-09-16 00:10:06 +08:00   ❤️ 1
    MySQL经典好用 MONG被吹大了...
    ivanlw
        3
    ivanlw  
       2012-09-16 01:15:05 +08:00
    mongdb的速度感觉如何呢?
    Air_Mu
        4
    Air_Mu  
       2012-09-16 01:20:11 +08:00
    简单来说MONGDB是MYSQL的3倍嘛。。
    likuku
        5
    likuku  
       2012-09-16 01:24:04 +08:00   ❤️ 1
    @liuxurong mongdb 没被吹大,只是LZ资源有限。一般IDC自有托管机器,硬盘是最便宜的部分了。假若sql语句不好,或者表结构没弄好,经常需要嵌套查询生成很多临时表+全表扫描的,CPU首先就干涸了,硬盘i/o也会受到强烈的考验,这种情况下,memcached 的作用都是很有限的。
    cabbala
        6
    cabbala  
       2012-09-16 02:55:46 +08:00
    应用场景问题,大公司里磁盘资源是最不值钱的东西了。不组RAID的话十来T轻松上。。
    Js
        7
    Js  
       2012-09-16 07:26:57 +08:00
    内存比数据库小用什么mongodb...
    iandyh
        8
    iandyh  
       2012-09-16 10:41:20 +08:00
    2.0 据说放弃 BSON,改了新的存储格式来省空间,有试过吗?
    pppcat
        9
    pppcat  
       2012-09-16 11:00:14 +08:00
    在同等内存开销的情况下缓存+mysql似乎也不低于mongodb
    skydiver
        10
    skydiver  
       2012-09-16 12:55:38 +08:00
    pgsql怎么样?据说最新版支持json格式了
    ratazzi
        11
    ratazzi  
       2012-09-16 13:10:06 +08:00
    我想说一台独立服务器都不建议用 mongodb,更别说内存、硬盘有限的 vps 了
    laiwei
        12
    laiwei  
    OP
       2012-09-18 12:06:59 +08:00
    @ivanlw mongodb的速度还可以(加上索引的情况下),在数据量100G以内,都ok。


    @liuxurong 嗯,mysql的确 可靠,好用,现在发现,"好用"是多么高的评价!

    @Air_Mu mysql 启用innodb compression的时候,是mongo的1/3, 正常情况下,是3/5差不多。


    @likuku mongo至少在大公司来讲,很少用,比如淘宝,百度 等都会选择使用hbase,mongo在一些小的业务上(数据几百G的级别),确实还蛮不错的。

    但是mysql,可以轻松支持上T的业务量,前提是表结构的设计要合理,查询都走主键或者索引。然后主从读写分离。 像你说的出现临时表这种情况,需要从代码层面优化。


    @Js mongodb对内存的要求不高,比如我20G、440万条数据量,600M的内存都跑的很顺畅。

    你说的情况,应该是redis,redis要求数据量一定要小于内存,否则性能会很差,启动也会超慢。
    twm
        13
    twm  
       2012-09-18 13:19:53 +08:00
    mongodb对磁盘空间是个灾难,redis对内存来说也是个灾难。
    Js
        14
    Js  
       2012-09-18 22:07:22 +08:00
    @laiwei 不,确实是mongo, 当然,redis这方面确实比mongo严重。 之前一个应用,原始数据差不多也是20G, 每天更新追加的关系数据有20~30MB,更新内容数据4~8G, 追加新内容数据大致200MB左右, 当然,数据基本一天上都会被读到几次。 测试的时候上了台32G,后台进程做数据归并的时候mongo和应用抢数据抢得厉害,吃swap吃得有点频。 后来就转到了mysql, 拿redis缓存关系数据, 表现良好, 不过有些内容数据一天也就读个几次,innodb buffer调大了成本也有点高, 就把内容数据又移到了kyototycoon, 于是跑得妥妥的
    DuXing
        15
    DuXing  
       2014-03-14 18:04:05 +08:00
    根本原因,可不可以说是JSON格式的数据浪费了很多空间资源?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1031 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 21:25 · PVG 05:25 · LAX 13:25 · JFK 16:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.