3

我正在构建一个 Web 应用程序,我想从一开始就对其进行扩展。我对数据库的可扩展性不是很感兴趣,我面临着这样的疑问:

我应该使用几张具有数百万行的表,还是应该将内容拆分成数百张表,如果不是数千张预计有数百行的表。

我可以同时走两条路线,但我不知道从长远来看哪一条路线会更好。

我在这方面找到了一些信息,但它没有多大帮助:MySQL Whats better for speed one table with number of rows or manages multiple tables?

基本上我需要知道,垂直或水平扩展数据库更好?

4

2 回答 2

4

如果查询调整得好,数据库将提供足够快的响应,在查询中进行非常小的调整时,速度可能会发生神奇的变化。

但是,您不希望在数据库中进行讲座。对于您的问题:这里最重要的是实现规范化形式。

您的表应该是可管理且无冗余的。为避免冗余,您需要尽可能地规范化您的表。规范化形式高达 6NF,但我认为Boyce–Codd规范化形式应该足够了,如果您在该领域没有经验的话。

于 2013-01-12T23:25:52.523 回答
2

伊斯梅特说得好。然而,在处理网络时,有时人们有一些他们想要跟踪的“聚合”或其他总数,并且可能会有些耗时。

如果您可能有这样的类别,那么根据需要为这些条目“附加”一些额外的列可能是一个很好的考虑。然后,当将记录添加到任何表时,可以运行插入/更新触发器来仅更新这些值,而不必显式地重新运行从数百万条记录中提取的完整查询并给您带来性能损失。

于 2013-01-13T00:23:30.073 回答