Sql Server 2008分区表基于插入日期

时间:2014-01-07 00:58:22

标签: sql sql-server database bulkinsert partitioning

我的问题是关于SQL Server 2008中的表分区。

我有一个程序,每10分钟左右将数据加载到一个表中。每天大约4000万行。

数据是bcp'到表中,需要能够非常快速地加载。

我想根据数据插入表中的日期对此表进行分区。每个分区都包含在特定日期加载的数据。

该表应保存最近50天的数据,因此每晚我都需要删除超过50天的任何分区。

我希望有一个进程将每小时加载到当前分区的数据聚合到一些聚合表中。摘要只会在最新的分区上运行(因为所有其他分区都已经汇总)所以重要的是它在insert_date上进行分区。

通常在查询数据时,指定插入日期(或多个插入日期)。通过向汇总数据深入查询详细数据,并根据插入日期汇总,在查询分区表中的详细数据时始终指定插入日期。

我可以在“Insert_date”表中创建一个默认列,该列获取Getdate()的值,然后以某种方式对此进行分区吗?

OR

我可以在“insert_date”表中创建一个列,并输入今天日期的硬编码值。

分区功能会是什么样的?

分隔表和分区视图会更合适吗?

1 个答案:

答案 0 :(得分:0)

我已经尝试了两种方法,即使我认为分区表更酷。但在尝试教导如何维护代码后,它只是没有道理。在那种情况下,我们使用了插入语句中的硬编码字段日期字段。

现在我使用不同的表(31天/ 31个表)+灌溉表,并且有一个丑陋的联合所有查询加入togeather月度数据。 优点。超级简单的sql和bcp的简单c#代码,没有人抱怨复杂性。

但是如果你有基础设施和一群.net / sql专家,我会选择分区策略。

相关问题