免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3112 | 回复: 3

有关分表太多的问题,请朋友们支招? [复制链接]

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2015-06-20 22:20:00
发表于 2011-11-22 16:07 |显示全部楼层
本帖最后由 crykun 于 2011-11-22 17:03 编辑

最近,做一个社区的php项目编码,面临海量数据的可能。
一个是用户表users,记录注册用户信息。
另一个好友表friend,保存用户的好友数据,用户之间相互添加好友,friend表膨胀得非常快,想通过分表办法解决friend膨胀过快的问题,没法按日期做分表,只能按users表的uid做分表,程序实现也没多大问题,friend表膨胀过快的问题彻底解决。
但另一个问题来了,注册一个新用户创建一个friend_uid表,随着用户的增多,一个mysql数据库中表会越来越多,如果用户达到百万级,那么一个数据库,就有上百万张表,这样能行不?我估摸着不行。

如果不行,有没有别的办法,另外的分表方案?请朋友们出点主意,小弟不甚感激。

论坛徽章:
0
发表于 2011-11-22 17:05 |显示全部楼层
回复 1# crykun


    为什么要一个uid就创建一个表??? 你的uid是自增的int类型吗?

论坛徽章:
0
发表于 2011-11-22 22:41 |显示全部楼层
最近,做一个社区的php项目编码,面临海量数据的可能。
一个是用户表users,记录注册用户信息。
另一个好友表friend,保存用户的好友数据,用户之间相互添加好友,friend表膨胀得非常快,想通过分表办法解决friend膨胀过快的问题,没法按日期做分表,只能按users表的uid做分表,程序实现也没多大问题,friend表膨胀过快的问题彻底解决。
但另一个问题来了,注册一个新用户创建一个friend_uid表,随着用户的增多,一个mysql数据库中表会越来越多,如果用户达到百万级,那么一个数据库,就有上百万张表,这样能行不?我估摸着不行。


看你的描述:
1.若是friend表只有uid,fid二个字段的话,没有必要考虑分表,数据条数多大也不是什么问题,因为表的数据容量大小有限,我们很多表都是上亿的,而且频繁的更新;

2.若真要拆分的话,你可以把uid进行取模的方式,比如分成8张 或16 表足矣,那么就除以8 或16 取模了,值对应的数据就写入那个表中

提供一个参考PPT http://www.mysqlops.com/2011/06/ ... e-architecture.html

论坛徽章:
0
发表于 2011-11-23 11:20 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP