分区或单独的表

时间:2009-10-29 12:46:53

标签: asp.net sql sql-server partitioning

我正在为车队管理系统设计数据库。

我将每3秒获得n条记录数。显然,我的表中将有数百万条记录,我将在current_location表中存储车辆的当前信息。这里的表现是个大问题。

为了解决这个问题,我收到了以下建议:

  1. 为每辆车创建一个单独的表格。 这里将在运行时创建一个表,就像我点击创建新表一样。所有与特定表相关的数据都将被插入并从该特定表中检索。

  2. 去分区。


  3. 请回答以下有关这些解决方案的问题。

    1. 两者有什么区别?

    2. 哪个最好,为什么?

    3. 表格中的行数会在什么时候导致性能问题?

    4. 还有其他解决方案吗?

    5. 现在---如果我在sql server 2008中进行范围分区,我应该怎么做,

      1. 使用varchar(20)进行分区。

      2. 我打算根据车辆编号进行分区。例如MH30 q 1234。       在车里没有。让我们说mh30 q 1234 - 只有30&我要改变....所以我的问题是我应该怎么做。意味着应该如何编写分区函数。

      3. ***第一个问题是我的sql ..now for sql server ********对不起家伙现在我从我的sql转移到sql server *****同样的问题

4 个答案:

答案 0 :(得分:2)

绝对使用分区。当mysql为你做这个时,为什么要找出用来回答问题的表格?如果你没有使用分区,祝你好运找到所有卡车的当前位置!

  1. 分区为您提供了多个表的性能优势,但具有自动修剪功能(仅选择回答查询所需的表)。

  2. 没有什么是“最好的”。问题是:什么是最适合您的问题?

  3. 这是不可能回答的。您只需要监视系统的性能问题并调整服务器设置或根据需要进行扩展。

  4. 至少就mysql而言,没有一个像分区一样好!

答案 1 :(得分:1)

不要为每天28,800行的分区而烦恼。

我们还没有(每天)超过500万。 (“尚未”表示我们没有关于他们想要的数据保留策略的业务输入)

答案 2 :(得分:0)

为每辆车制作一个单独的表,并使车辆ID成为主键中的第一个字段之间,性能差异应该非常小。无论哪种方式,您都可以在磁盘上获得相同的分组,并且mysql在表中的数百万行中应该没有问题。

分区仅在您的计算机上有多个磁盘并且希望将负载分散到磁盘上时才有用。

所以我想我的回答是不做。先验地设计这一点似乎有点过头了。

答案 3 :(得分:0)

我想指出的一件事是,拥有一个表(您可以在以后需要时进行分区)将更容易在数据库和查询数据方面进行维护。