2009-10-29 39 views
1

我正在为车队管理系统设计数据库。分区或单独表格

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

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

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

  2. 去分区。


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

  1. 两者有什么区别?

  2. 哪个最好,为什么?

  3. 表中的行数会导致性能问题?

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

现在---如果我去了范围分区在SQL Server 2008,我应该做些什么来,使用VARCHAR(20)

  1. 分区。

  2. 我打算做基于车辆号的分区。例如MH30 q 1234. 这里在车辆号码。可以说mh30 q 1234 - 只有30 & q要改变....所以我的问题是如何我应该去。意味着应该如何编写分区功能。

*** 1日这个问题是问我的sql..now为SQL Server现在 ********对不起你们,我从我的SQL转移到SQL Server *****随着同样的问题

回答

2

绝对使用分区。为什么要花所有的麻烦来找出哪个表用于回答一个问题,当MySQL将为你做?如果你不使用分区,祝你好运找到所有卡车的当前位置!

  1. 分配给你多个表的性能优势,但与自动修剪(只回答查询所需的表的选择)。

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

  3. 这是不可能回答的。您只需监控系统的性能问题并根据需要调整服务器设置或缩放比例。

  4. 至少就mysql而言,没有分区好!

0

为每辆车制作单独的表格并使车辆ID成为主键中的第一个字段之间应该几乎没有性能差异。无论哪种方式,您都可以在磁盘上获得相同的分组,而mysql应该不会对表中的数百万行产生任何影响。

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

所以我想我的答案是不做的。先验地设计这似乎是矫枉过正的。

+0

哦,是这样..然后如果我有一个单一的磁盘.. 你想说partiton不会使用单个磁盘? – hrishi 2009-10-30 07:36:56

+0

是的,如果您只有一个磁盘,分区不会使它运行得更快。 – 2009-10-30 14:39:58

+0

如果数据库只能锁定一个分区(并且不需要锁定整个表),即使使用一个磁盘,分区也可以更快。 – 2013-09-25 15:47:47

1

不要打扰每天28,800行的分区。

我们还没有(每天)超过500万。 (在“尚”是指我们在他们想要什么样的数据保留策略没有业务输入)

+0

Hi..28,800 rec对于单个设备考虑这样的100个设备..然后sql服务器每天会执行28,800,800条记录... Thanx – hrishi 2009-11-02 13:18:02

+0

@hrishi:这是不同的。然而,100人仍然是2,880,000人,是我们的一半 – gbn 2009-11-02 13:36:14

0

有一两件事我想指出的是,有一个表(您可以在以后需要分区)会容易得多维护数据库和查询数据。