一个拥有过亿用户的表,如何设计它,让它达到更好的性能? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
binge
V2EX    MySQL

一个拥有过亿用户的表,如何设计它,让它达到更好的性能?

  •  
  •   binge 2012-09-04 14:32:46 +08:00 9922 次点击
    这是一个创建于 4790 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如题,对于大量数据的表,各位是怎样设计的,就拿用户表来说说吧。在实际中也会遇到这种情况,当数据量达到百万级的时候,神马执行的效率都明显低下来。
    19 条回复    1970-01-01 08:00:00 +08:00
    feiandxs
        1
    feiandxs  
       2012-09-04 14:41:49 +08:00
    虽然方法多种多样,但根据楼主问问题的表述方法,臆测了下楼主可能会用的手段以及不太可能会用到的方案,最后答案两个字。

    拆之。
    bruce
        2
    bruce  
       2012-09-04 15:17:04 +08:00
    我只想说一句:假如你获取一个用户成本1毛,搞到1亿用户成本就是1000万元。
    binge
        3
    binge  
    OP
       2012-09-04 15:22:31 +08:00
    @bruce 如果抛开成本不说呢?本话题重点在大数据量的处理上。
    FinF
        4
    FinF  
       2012-09-04 15:25:09 +08:00
    分表
    chairo
        5
    chairo  
       2012-09-04 15:50:24 +08:00
    看具体情况了,如果只用用户id索引查询的话,在用户id列加个索引,效率也就差不多了

    否则拆表,拆库,读写分离,db负载均衡,memcache,nosql啥牛逼就上啥。
    bruce
        6
    bruce  
       2012-09-04 16:25:30 +08:00
    手头巧好有个 2 亿条数据存在 MongoDB 的表,查询毫无压力。

    如今如果优化的好,千万数据 MYSQL 单表毫无压力。
    binge
        7
    binge  
    OP
       2012-09-04 16:26:57 +08:00   1
    @bruce 求经验分享 :)
    bruce
        8
    bruce  
       2012-09-04 16:30:14 +08:00   3
    MYSQL 优化: http://blog.eood.cn/mysql
    MongoDB 只要加好索引问题就不大了。
    alexzhan
        9
    alexzhan  
       2012-09-04 16:35:07 +08:00
    不见得分表就是最好的方式。
    具体情况具体分析。
    Reddit's database has only two tables.
    http://kev.inburke.com/kevin/reddits-database-has-two-tables/
    idblife
        10
    idblife  
       2012-09-04 19:07:51 +08:00
    对于oracle来说,这个很轻松,分区表即可。对mysql不熟悉。。。
    cam
        11
    cam  
       2012-09-04 23:52:30 +08:00
    请先确定,你的用户真的过亿吗?如果是就用钱来搞定。
    binge
        12
    binge  
    OP
       2012-09-05 08:28:53 +08:00
    @cam 哈哈,我也想,用户表只是打个比方,我想表达的纯粹是一个存储大量数据的表如何设计而已。
    0bit
        13
    0bit  
       2012-09-05 09:35:26 +08:00
    PostgreSQL的话,可以用分区表,MySQL就不知道了,木有用过
    zhuf
        14
    zhuf  
       2012-09-05 10:43:58 +08:00
    mysql 可以拆表,或者读写分离。
    不过具体场景还是具体分析吧。
    areless
        15
    areless  
       2012-09-05 11:50:06 +08:00
    不要做徒劳的设计了,提高4K读写自然会快,SSD做RAID 0吧。
    无论哪种数据库,哪种方式优化。。。在一台才几M读取速度的机械硬盘老爷机下都没有意义。
    bigwang
        16
    bigwang  
       2012-09-05 12:29:05 +08:00
    根据查询条件分表分库,百万规模的表和千万规模的表,查询速度有很大差别

    如果拿 MongoDB 做线上实时查询,那是玩票不负责的

    mongodb比较适合做数据挖掘,分析日志什么的,可以当做一个单机,简易版的hadoop用
    ewangke
        17
    ewangke  
       2012-09-05 14:14:17 +08:00
    @bruce MongoDB是不是很费存储空间?现在MongoDB的DBaaS平台都挺贵的。
    chaker
        18
    chaker  
       2012-09-05 15:44:54 +08:00
    用 TTree,上TB的数据也没问题
    bruce
        19
    bruce  
       2012-09-24 10:07:12 +08:00
    @ewangke 极费空间,而且费内存。没有完美的事。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5298 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 07:08 PVG 15:08 LAX 00:08 JFK 03:08
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86