一个大的sql server表中有几个较小的?

时间:2014-02-06 11:37:53

标签: sql-server database-design scalability

我有一些设计问题要问。

假设我有一些TBL_SESSIONS表,我保留每个登录的user-id和一些Dirty-flag(表明他所拥有的内容自获得后是否已更改)。< / p>

现在,任何已登录的用户都应该每隔几秒钟定期向该表询问Dirty-flag,即该表上有很多读取调用,以及Dirty-flag变了很多。

假设我希望许多用户同时登录。我想知道是否有任何理由创建像10个这样的表,并让用户在这些表之间分配(比如根据用户ID)。

我从两个方面问这个问题。首先,在性能方面。第二,在可扩展性方面。

我很想听听你的意见

2 个答案:

答案 0 :(得分:1)

对于1米行,请使用单个表。

使用正确的索引,访问时间应该不是问题。如果您使用多个表并在其中分布用户,则需要进行其他处理以查找要读取/更新的表。

此外,您将为每个表分配多少用户?当用户数量增长时会发生什么...添加更多表格?我想你最终会遇到维护噩梦。

答案 1 :(得分:0)

如果你有很多记录,如数十亿,以及你的服务器无法处理的高负载,那么有几个表就可以了。这样您就可以执行分片 - &gt;在不同的服务器上将一个表拆分为多个表。例如。在服务器A(id 1到100 000 000)上有前1亿条记录,服务器B上有1亿条记录(100 000 001到200 000 000)等。其他方式 - 正在<强> 不同上的数据并通过某种平衡器查询数据,这可能更难(复制不是RDBMS的关键功能,因此它取决于引擎)