我有一些设计问题要问。
假设我有一些TBL_SESSIONS
表,我保留每个登录的user-id
和一些Dirty-flag
(表明他所拥有的内容自获得后是否已更改)。< / p>
现在,任何已登录的用户都应该每隔几秒钟定期向该表询问Dirty-flag
,即该表上有很多读取调用,以及Dirty-flag
变了很多。
假设我希望许多用户同时登录。我想知道是否有任何理由创建像10个这样的表,并让用户在这些表之间分配(比如根据用户ID)。
我从两个方面问这个问题。首先,在性能方面。第二,在可扩展性方面。
我很想听听你的意见
答案 0 :(得分:1)
对于1米行,请使用单个表。
使用正确的索引,访问时间应该不是问题。如果您使用多个表并在其中分布用户,则需要进行其他处理以查找要读取/更新的表。
此外,您将为每个表分配多少用户?当用户数量增长时会发生什么...添加更多表格?我想你最终会遇到维护噩梦。
答案 1 :(得分:0)
如果你有很多记录,如数十亿,以及你的服务器无法处理的高负载,那么有几个表就可以了。这样您就可以执行分片 - &gt;在不同的服务器上将一个表拆分为多个表。例如。在服务器A
(id 1到100 000 000)上有前1亿条记录,服务器B
上有1亿条记录(100 000 001到200 000 000)等。其他方式 - 正在<强> 不同上的数据并通过某种平衡器查询数据,这可能更难(复制不是RDBMS的关键功能,因此它取决于引擎)