数据库 关于数据库设计的疑问,user 是分成 user_info 和 user_profile 还是单独一个表

Zoker · May 08, 2014 · Last by kesin replied at May 09, 2014 · 3375 hits

最近看到公司数据库发现了这个问题,于是开始纠结其性能上得问题了。

user 表是分成user_info(经常访问和操作)和user_profile(只有在进个人页面才会操作) 还是说全都放到一个users表里面去?

对于文章而言是把文章得内容单独放到一个表好,还是全都放到一起好?

各位走过路过请发表下自己得意见。

文章这个地方,之所以要拆,是因为文档内容是 text 类型的,数据会比较大,所以导致 sql 里每一行都变大,而 sql 是按行扫描的,所以这样影响效率。

数据量不大的话,不管是你说的 user 表还是 article 表,都放不要拆。

#1 楼 @alsotang 10w+的用户数据量呢?

#2 楼 @kesin 10w 根本就不算是大数据啊。。。

#2 楼 @kesin 如果算 500 bytes 一个行的话,一共也就

> 10 * 10000 * 500 / 1000 / 1000
50MB

的数据

#4 楼 @alsotang 那你觉得像 so 和 github 这种类型的网站,他们的 user 表是如何设计的呢?

常用的做法是,个人不能随意修改的东西比如密码、邮箱、用户名等等放一个表。因为修改时比较麻烦,需要认证、发邮件什么的。其他可以随意修改的比如自我介绍等等放另外一个表。

好处是 profile 的部分用户修改时比较方便,你也不需要加入特殊的逻辑。稍微麻烦的地方就是经常要 include,不过也不是什么大问题。

性能没什么好考虑的,你遇到了瓶颈再说。

个人偏向@billy 的做法。

想拆就拆呗,反正有model 方法可以 delegate

#9 楼 @ericguo 嗯,那关注表呢,都放在一个表里面是不是量太大了?比如关注用户 type 字段就是 user,关注帖子 type 就是 post,还是说分开两个表一个 user 关注表,一个 post 关注表呢?

用不着,SO 没拆

才 10w 用户的话,完全不用拆。 到 1000w 用户再考虑拆这些,现在先快点把东西搞出来是正道。

#12 楼 @kgen 嗯,谢谢,是现有的一个项目,觉得设置的不太合理,看来我对大数据量的概念还不是很够,了解一下去。

You need to Sign in before reply, if you don't have an account, please Sign up first.