做一个大量用户的历史记录在线同步,用mysql,是为每个用户建一个Table效率高还是在一个Table里用UID标识不同用户效率高?
程序员文章站
2022-06-12 20:59:19
...
所谓效率……参见SAE收费方式。越便宜越好。
http://sae.sina.com.cn/?m=devcenter&catId=155
这个"大量"究竟是哪个数量级, 一万, 十万, 百万, 千万? 大概每个用户的数据量是多大
活跃用户和非活跃用户的比例如何? 数据的读写比是如何, 是大量的读少量的写, 还是经常写但是很少读?
要提供什么功能? 如果只是简单的存储和读取历史记录, 可以考虑Key-Value数据库, 如果要做分析, 是否会有跨用户的查询?
也许这些情况都不明朗, 但是要先考虑下.
不过直觉告诉我, 楼主的大量用户不会大到哪里去, 所以随便怎么设计应该都能凑合 具体要看你需要实现的功能和设计架构以及用户数量了。
如果你是为海量用户实现各用户不同的复杂功能,则为每个用户建独立表更好。这样可以将用户根据ID或区域等分布到不同的多台Mysql服务器上,便于优化、管理和容错。
要是只计划有少量的用户和数据和功能并以价格为标杆,并且数据一台服务器就能处理,那么楼上两位说的为真。 太多的表或者太多的列,都会影响到效率.
为每个用户建一个表一般在设计中不采用.
http://sae.sina.com.cn/?m=devcenter&catId=155
回复内容:
两个都不好,可以基于uid哈希分表 或基于时间线哈希分表。看具体需求定义这个"大量"究竟是哪个数量级, 一万, 十万, 百万, 千万? 大概每个用户的数据量是多大
活跃用户和非活跃用户的比例如何? 数据的读写比是如何, 是大量的读少量的写, 还是经常写但是很少读?
要提供什么功能? 如果只是简单的存储和读取历史记录, 可以考虑Key-Value数据库, 如果要做分析, 是否会有跨用户的查询?
也许这些情况都不明朗, 但是要先考虑下.
不过直觉告诉我, 楼主的大量用户不会大到哪里去, 所以随便怎么设计应该都能凑合 具体要看你需要实现的功能和设计架构以及用户数量了。
如果你是为海量用户实现各用户不同的复杂功能,则为每个用户建独立表更好。这样可以将用户根据ID或区域等分布到不同的多台Mysql服务器上,便于优化、管理和容错。
要是只计划有少量的用户和数据和功能并以价格为标杆,并且数据一台服务器就能处理,那么楼上两位说的为真。 太多的表或者太多的列,都会影响到效率.
为每个用户建一个表一般在设计中不采用.